Bug 763259 (GLUSTER-1527)

Summary: mount time defunct window with remote volumes
Product: [Community] GlusterFS Reporter: Csaba Henk <csaba>
Component: fuseAssignee: Amar Tumballi <amarts>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: high Docs Contact:
Priority: low    
Version: mainlineCC: gluster-bugs, vraman
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Csaba Henk 2010-09-04 06:30:34 UTC
(In reply to comment #0)
>  # glusterfs -f /dev/stdin /mnt/gluster0 <<EOF

s@/mnt/gluster0@/mnt/gluster@

Comment 1 Csaba Henk 2010-09-04 09:29:27 UTC
Do the following:

prior to mounting glusterfs on /mnt/gluster, start this:

 $ while :; do touch /mnt/gluster/x || break; done

then mount a remote glusterfs volume, eg.

 # glusterfs -f /dev/stdin /mnt/gluster0 <<EOF
volume client
    type protocol/client
    option transport-type tcp
    option remote-host localhost
    option remote-subvolume brick-0
end-volume
EOF

The mount will be succesfull and soon you can use the fs. However, in the shell where you had the loop, you'll see it has terminated with

 touch: cannot touch `/mnt/gluster/x': Transport endpoint is not connected

That is, there was an interim period when the mount was already in place but not yet usable. (Note, remote subvolume is needed for this, a simple posix mount does not have the defunct window).

Access to the fs should be synchronized with connection to the server. If we fail to do this, a lot of stuff, automount, SELinux hooks, various event notification systems might break havoc (yet again).

Comment 2 Amar Tumballi 2010-09-06 04:16:55 UTC
patch http://patches.gluster.com/patch/4566/ fixes this issue. It was happening because the fuse_thread_proc() was started before handshake is complete.

Comment 3 Vijay Bellur 2010-09-06 06:47:11 UTC
PATCH: http://patches.gluster.com/patch/4566 in master (changes in fuse proc thread initialization)

Comment 4 Vijay Bellur 2010-09-07 15:40:19 UTC
PATCH: http://patches.gluster.com/patch/4641 in master (in case of failures, don't hang fuse mount)

Comment 5 Vijay Bellur 2010-09-08 06:36:28 UTC
PATCH: http://patches.gluster.com/patch/4650 in master (fuse: suppress wrong/confusing log message about graph setup failure)