Bug 947830 - On RHS clients machines, installing glusterfs-fuse package does not install fuse package automatically
Summary: On RHS clients machines, installing glusterfs-fuse package does not install f...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: GlusterFS
Classification: Community
Component: build
Version: mainline
Hardware: All
OS: Linux
medium
low
Target Milestone: ---
Assignee: Niels de Vos
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: 928327
TreeView+ depends on / blocked
 
Reported: 2013-04-03 11:47 UTC by Niels de Vos
Modified: 2013-07-24 17:41 UTC (History)
7 users (show)

Fixed In Version: glusterfs-3.4.0
Doc Type: Bug Fix
Doc Text:
Clone Of: 928327
Environment:
Last Closed: 2013-07-24 17:41:09 UTC
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Embargoed:


Attachments (Terms of Use)

Description Niels de Vos 2013-04-03 11:47:12 UTC
Description of problem:
On a freshly installed RHEL 6.3 and 5.9 server machines, installing glusterfs-fuse does not install fuse rpm. So doing a fuse mount for a gluster volume fails as expected and after installing fuse explicitly, fuse mount is successful.

Version-Release number of selected component (if applicable):


How reproducible:

always

Steps to Reproduce:

1. Get a freshly installed RHEL 6.3 or 5.9 servers.
2. Register it to respective base channel for all available updates
3. Build the glusterfs packages from the latest glusterfs.git
4. Check if fuse is installed.
5. do "yum localinstall glusterfs...rpm glusterfs-fuse...rpm"
   Notice that the baove command does not install fuse.
6. try to mount (fuse mount) a gluster fs volume and it will fail as fuse is not there
 e.g.:mount.glusterfs gserv:<volume> /mnt/gluster-volume-fuse/
Mount failed. Please check the log file for more details

7. check that the fuse package is not installed 
"  rpm -qa fuse  " command will not give any result.

Actual results:


Expected results:

when we install glusterfs-fuse package, it should install fuse package also as it is dependent on fuse.

Additional info:

--- Additional comment from Niels de Vos on 2013-04-03 13:43:05 CEST ---

Checked with the latest release:

[root@rhs-1 ~]# rpm -q glusterfs-fuse 
glusterfs-fuse-3.3.0.7rhs-1.el6rhs.x86_64
[root@rhs-1 ~]# rpm -q --requires glusterfs-fuse | grep fuse
fuse.so.0()(64bit)  
[root@rhs-1 ~]# rpm -q --provides glusterfs-fuse | grep fuse
fuse.so.0()(64bit)  
glusterfs-fuse = 3.3.0.7rhs-1.el6rhs
glusterfs-fuse(x86-64) = 3.3.0.7rhs-1.el6rhs
[root@rhs-1 ~]# rpm -q --provides fuse 
config(fuse) = 2.8.3-4.el6
fuse = 2.8.3-4.el6
fuse(x86-64) = 2.8.3-4.el6


Additional tests show that the 'fuse' package can be uninstalled without issue:

[root@rhs-1 ~]# rpm --test -e fuse && echo "fuse is not required"
fuse is not required
[root@rhs-1 ~]# rpm --test -e glusterfs-server && echo "fuse is not required"
error: Failed dependencies:
	glusterfs-server is needed by (installed) vdsm-gluster-4.9.6-20.el6rhs.noarch


The fuse.so from glusterfs-fuse will try to call /usr/bin/fusermount. This
obviously fails when the fuse package is not installed and fusermount is not
available.

Comment 1 Niels de Vos 2013-04-03 11:50:12 UTC
Posted a proposed change to the .spec file:
- http://review.gluster.org/4768

Comment 2 Csaba Henk 2013-04-13 14:01:57 UTC
Hm,

1. not having a fusermount helper is equivalent with privilegizing mount (ie. only root (precisely, one who has CAP_SYS_ADMIN)) can mount glusterfs)

2. having our custom fusermount helper named "fusermount-glusterfs" is equivalent with allowing unprivileged gluster mount

3. for us, having only the stock fusermount helper (shipped by fuse, named "fusermount") sums up to not having a fusermount helper (ie. essentially the same sas 1.) That's because we deviated from the stock calling convention.

(+1. in the source you see a fallback to "fusermount" if building of "fusermount-glusterfs" is not enabled. That's misleading though -- it's defunct historical clutter that should be removed (or at least commented out, as it might become functional again if fuse upstream adopts our calling convention))

Therefore at the moment, adding fusermount as dependency makes no operational difference, only brings in a superfluous dependency.

Comment 3 Niels de Vos 2013-04-16 10:43:38 UTC
(In reply to comment #2)
> (+1. in the source you see a fallback to "fusermount" if building of
> "fusermount-glusterfs" is not enabled. That's misleading though -- it's
> defunct historical clutter that should be removed (or at least commented
> out, as it might become functional again if fuse upstream adopts our calling
> convention))
> 
> Therefore at the moment, adding fusermount as dependency makes no
> operational difference, only brings in a superfluous dependency.

Moving back to ASSIGNED as we obviously do not need fusermount. I've tested that
on one of my systems too, and mounting works fine if the fuse package is not
installed.

Comment 4 Morten Johansen 2013-04-30 19:56:08 UTC
I am having the described problem (mounting glusterfs volumes would not work after installing "glusterfs-fuse" on a RHEL5.9 client machine), and installing the fuse package fixes it.

Mounting a volume made glusterfs complain about missing /dev/fuse until the "fuse" package was installed.

Comment 5 JasonG 2013-05-20 20:08:32 UTC
I have also verified that installing glusterfs-fuse only with --nodeps mounts fine.

Comment 6 Niels de Vos 2013-05-22 14:09:04 UTC
Test on RHEL-5.9:

[root@vm130-31 ~]# mount -t glusterfs rhs-2.example.com:/source /mnt
Mount failed. Please check the log file for more details.
[root@vm130-31 ~]# tail /var/log/glusterfs/mnt.log 
[2013-05-22 13:49:17.815337] I [glusterfsd.c:1776:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.3.0.7rhs (/usr/sbin/glusterfs --volfile-id=/source --volfile-server=rhs-2.example.com /mnt)
[2013-05-22 13:49:17.815949] E [mount.c:610:gf_fuse_mount] 0-glusterfs-fuse: cannot open /dev/fuse (No such file or directory)
[2013-05-22 13:49:17.815978] E [xlator.c:385:xlator_init] 0-fuse: Initialization of volume 'fuse' failed, review your volfile again

Now, after loading the fuse module all works:

[root@vm130-31 ~]# modprobe fuse
[root@vm130-31 ~]# mount -t glusterfs rhs-2.example.com:/source /mnt
[root@vm130-31 ~]# mount | grep glusterfs
glusterfs#rhs-2.example.com:/source on /mnt type fuse (rw,default_permissions,allow_other,max_read=131072)


Test on RHEL-6.5:

[root@vm130-32 ~]# lsmod | grep fuse
[root@vm130-32 ~]# mount -t glusterfs rhs-2.example.com:/source /mnt
[root@vm130-32 ~]# lsmod | grep fuse
fuse                   69253  2 


Conclusion:
The fuse module needs to be loaded before /dev/fuse can be used. On RHEL6 and Fedora the module is loaded on demand. RHEL5 needs to load the module manually.

Solution:
On RHEL5 add a script under /etc/sysconfig/modules/ that loads the fuse module on boot.

Comment 7 Anand Avati 2013-05-22 17:10:04 UTC
REVIEW: http://review.gluster.org/5070 (rpm: automatically load the fuse module on EL5) posted (#1) for review on master by Niels de Vos (ndevos)

Comment 8 Anand Avati 2013-05-22 19:21:18 UTC
COMMIT: http://review.gluster.org/5070 committed in master by Anand Avati (avati) 
------
commit 323fe9ec806a4a922fc6f3fd2389368811d6b417
Author: Niels de Vos <ndevos>
Date:   Wed May 22 16:20:36 2013 +0200

    rpm: automatically load the fuse module on EL5
    
    The fuse module needs to be loaded before /dev/fuse can be used. On
    RHEL6 and Fedora the module is loaded on demand. RHEL5 needs to load the
    module manually.
    
    This change add a script under /etc/sysconfig/modules/ that loads the
    fuse module on boot and packages it in the EL5 version of
    glusterfs-fuse.
    
    One of the features of GlusterFS is to not depend on additional fuse
    userspace. The conditional requires on /usr/bin/fusermount is not
    needed, this command is never called in the current version (even though
    is it referenced in the sources).
    
    Change-Id: I77028dade54771cb49cea68a517100f73763dc85
    BUG: 947830
    Signed-off-by: Niels de Vos <ndevos>
    Reviewed-on: http://review.gluster.org/5070
    Reviewed-by: Kaleb KEITHLEY <kkeithle>
    Tested-by: Gluster Build System <jenkins.com>
    Reviewed-by: Anand Avati <avati>

Comment 9 Rick Sherman 2013-05-28 22:33:59 UTC
This bug is still seen in 3.4.0beta2

[root@ip-192-168-40-101 tmp]# rpm -qp glusterfs-fuse-3.4.0-0.5.beta2.el6.x86_64.rpm --requires
warning: glusterfs-fuse-3.4.0-0.5.beta2.el6.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 89ccae8b: NOKEY
glusterfs = 3.4.0-0.5.beta2.el6
/usr/bin/fusermount

Comment 10 Anand Avati 2013-05-29 06:44:58 UTC
REVIEW: http://review.gluster.org/5102 (rpm: automatically load the fuse module on EL5) posted (#1) for review on release-3.4 by Niels de Vos (ndevos)

Comment 11 Niels de Vos 2013-05-29 10:16:43 UTC
(In reply to Rick Sherman from comment #9)
> This bug is still seen in 3.4.0beta2
> 
> [root@ip-192-168-40-101 tmp]# rpm -qp
> glusterfs-fuse-3.4.0-0.5.beta2.el6.x86_64.rpm --requires
> warning: glusterfs-fuse-3.4.0-0.5.beta2.el6.x86_64.rpm: Header V4 RSA/SHA1
> Signature, key ID 89ccae8b: NOKEY
> glusterfs = 3.4.0-0.5.beta2.el6
> /usr/bin/fusermount

This seems to be a package built from the Fedora glusterfs.spec. The needed
changes have been applied there now too. The next release will not require
fusermount anymore.

Test-packages are temporarily available from:
- http://koji.fedoraproject.org/scratch/devos/task_5437680
  (scratch-build http://koji.fedoraproject.org/koji/taskinfo?taskID=5437680)

Comment 12 Anand Avati 2013-05-29 18:27:14 UTC
COMMIT: http://review.gluster.org/5102 committed in release-3.4 by Vijay Bellur (vbellur) 
------
commit 06036dd18d67bf55111a46915f702078fdf8e65b
Author: Niels de Vos <ndevos>
Date:   Wed May 22 16:20:36 2013 +0200

    rpm: automatically load the fuse module on EL5
    
    The fuse module needs to be loaded before /dev/fuse can be used. On
    RHEL6 and Fedora the module is loaded on demand. RHEL5 needs to load the
    module manually.
    
    This change add a script under /etc/sysconfig/modules/ that loads the
    fuse module on boot and packages it in the EL5 version of
    glusterfs-fuse.
    
    One of the features of GlusterFS is to not depend on additional fuse
    userspace. The conditional requires on /usr/bin/fusermount is not
    needed, this command is never called in the current version (even though
    is it referenced in the sources).
    
    BUG: 947830
    Change-Id: I166327b8f2dff2c150368bdf5ea917af259186b2
    Signed-off-by: Niels de Vos <ndevos>
    Reviewed-on: http://review.gluster.org/5102
    Tested-by: Gluster Build System <jenkins.com>
    Reviewed-by: Kaleb KEITHLEY <kkeithle>
    Reviewed-by: Vijay Bellur <vbellur>


Note You need to log in before you can comment on or make changes to this bug.