Fedora Core 5 on x86_64, autofs-4.1.4-29, kernel-2.6.18-1.2200.fc5
The situation:
- /people is on autofs, /people/gadda points to m179:/disk05/disk11/gadda
- /hosts in on autofs so that /hosts/host/disk mounts host:/disk
- m179:/disk05/disk11/gadda/normalisation (aka /people/gadda/normalisation) is
a symlink to /hosts/m179/disk03/gadda/lemonde
A script in /people/gadda/normalisation that opens and closes files
repeatedly in normalisation has random ENOENT failures. Crossing a
strace and a tcpdump gave me this trace:
01:49:17.429638 open("/people/gadda/normalisation/bugs2.norm")
01:49:17.429703 getattr(bugs2.norm)
01:49:17.430163 getattr ok
01:49:17.432830 open ok
01:49:17.443308 open("/people/gadda/normalisation/bugs2.norm")
01:49:17.443360 getattr(bugs2.norm)
01:49:17.443798 getattr ok
01:49:17.446893 open ok
01:49:17.451674 open("/people/gadda/normalisation/bugs2")
01:49:17.451752 getattr(bugs2)
01:49:17.452232 getattr ok
01:49:17.452268 open ok
01:49:17.457657 open("/people/gadda/normalisation/bugs2.norm")
01:49:17.457706 getattr(bugs2.norm)
01:49:17.458152 getattr ok
01:49:17.465475 open ok
01:49:17.473659 open("/people/gadda/normalisation/bugs2")
01:49:17.473707 getattr(bugs2)
01:49:17.474156 getattr ok
01:49:17.474189 open ok
01:49:17.478682 open("/people/gadda/normalisation/bugs2.norm")
01:49:17.478728 getattr(bugs2.norm)
01:49:17.479180 getattr ok
01:49:17.479407 open ok
01:49:17.480524 open("/people/gadda/normalisation/bugs2")
01:49:17.480569 getattr(bugs2)
01:49:17.481018 getattr ok
01:49:17.481513 open ok
01:49:17.486468 start TCP to sunrpc to do the getport
01:49:17.487203 open("/people/gadda/normalisation/bugs2")
01:49:17.488679 getport(MOUNT)
01:49:17.491467 getport reply
01:49:17.492038 mount_null
01:49:17.492822 mount_null reply
01:49:17.496420 umount("/disk05/disk11/gadda") (mounted on /people/gadda)
01:49:17.499833 umount ok
01:49:17.525547 getattr(general.log)
01:49:17.525596 open fail ENOENT <---- script failure here
01:49:17.526026 getattr ok
01:49:17.526201 write(general.log)
01:49:17.526421 getattr(general.log)
01:49:17.527115 getattr ok
01:49:17.529122 write ok
01:49:17.529170 write(general.log)
01:49:17.531651 write ok
01:49:17.575045 getattr(general3.cmd)
01:49:17.575515 getattr ok
01:49:17.620203 getport(NFS)
01:49:17.620728 getport reply
01:49:17.620747 nfs_null
01:49:17.621167 nfs_null ok
01:49:17.621184 getport(MOUNT)
01:49:17.621682 getport reply
01:49:17.621699 mount_null
01:49:17.622182 mount_null ok
01:49:17.622209 mount("/disk05/disk11/gadda")
01:49:17.626987 mount ok
[...]
01:49:17.685213 readlink("normalisation")
01:49:17.685678 readlink reply "/hosts/m179/disk03/gadda/lemonde"
Looks like having the link looked up all the time does not count as
being busy for a mountpoint (not that surprising), and for that reason
autofs unmounts on timeout. It asks for the remount fast but there is
a window between unmounting and remounting where opens through the
link fail.
Is there something I can do?
OG.
_______________________________________________
autofs mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/autofs