i believe i mentioned this issue to russ some time ago:
when mntgen is used behind exportfs, the mount points get "lost",
as exportfs does not hold an open file descriptor for each
directory that has been walked to by its clients, so walking
to a file below the mount point results in mntgen creating a new
mountpoint with a new qid, so "forgetting" the old mount.
reproduce the problem with:
mkdir /tmp/mnttest
mntgen /tmp/mnttestsrvfs
srvfs mnttest /tmp/mnttest
[in another window]
mount /srv/mnttest /tmp
bind /dev /tmp/blah
ls -l /tmp/blah
a deeper fix might change the plan 9 kernel to allow
user processes to hold file descriptors that are not
yet open (but may be walked). that fix doesn't seem so
likely in the near future (and it's not a great problem for
anything else), so this fix changes mntgen so it always
generates the same qid (60 bits of md5sum) for a given mountpoint
name, thus avoiding the problem.
it's a small enough change that i hope it can be accepted for
the time being, even if it is only an interim solution to a
deeper problem...
|