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.
Posted a proposed change to the .spec file: - http://review.gluster.org/4768
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.
(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.
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.
I have also verified that installing glusterfs-fuse only with --nodeps mounts fine.
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.
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)
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>
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
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)
(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)
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>