Re: [CFT] Autofs.

From: Edward Tomasz Napierała <trasz_at_FreeBSD.org>
Date: Thu, 4 Sep 2014 21:41:49 +0200
On 0904T1624, Hans Ottevanger wrote:
> On 09/04/14 14:43, Edward Tomasz Napierała wrote:
> >On 0904T0759, Hans Ottevanger wrote:
> >>On 08/17/14 16:50, Edward Tomasz Napierała wrote:
> >>>On 0817T1244, Hans Ottevanger wrote:
> >>>>
> >>[...]
> >>>>Hi!
> >>>>
> >>>>Great to see a real autofs finally coming to FreeBSD.
> >>>>
> >>>>I already did some very cursory testing on a recent 11-CURRENT system
> >>>>that I still happened to have and things with at least the /net map
> >>>>look quite OK.
> >>>>
> >>>>I could do some more extensive testing if I could use some of my
> >>>>10-STABLE systems. I already checked that the patch applies cleanly
> >>>>to a recent 10-STABLE (modulo a few offsets) and that both buildworld
> >>>>and buildkernel succeed. Should I expect difficulties actually
> >>>>running your autofs on 10-STABLE?
> >>>
> >>>No, it should be fine.  Plan is to MFC this to 10 soon, btw.
> >>>
> >>
> >>Good to see that autofa has been MFC'd during my vacation 8-)
> >>
> >>But I found a little problem...
> >>
> >>When I try to access the NFS exported file-systems on an older test
> >>machine (running 7.x, but that is not so relevant, it also happens
> >>with other servers), with the following exports:
> >>
> >>$ showmount -e soekris
> >>Exports list on soekris:
> >>/var                               192.168.0.0
> >>/usr                               192.168.0.0
> >>/home                              192.168.0.0
> >>/                                  192.168.0.0
> >>
> >>I get:
> >>
> >>$ ls /net/soekris
> >>COPYRIGHT       dist            libexec         proc            tmp
> >>bin             entropy         lost+found      rescue          usr
> >>boot            etc             media           root            var
> >>compat          home            mnt             sbin
> >>dev             lib
> >>
> >>which is correct, but the next level fails:
> >>
> >>$ ls -l  /net/soekris/usr
> >>total 0
> >>
> >>since /usr on soekris is definitely not empty.
> >>Relevant output of mount :
> >>
> >>...
> >>map -hosts on /net (autofs)
> >>soekris:/ on /net/soekris (nfs, nosuid, automounted)
> >>
> >>This is on 10.1-PRERELEASE r270922. The kernel config is GENERIC
> >>minus devices I do not have and AUTOFS added. Config files
> >>(/etc/auto_master, et al) are default. Mounting manually does succeed
> >>(in two steps, of course).
> >>
> >>When trying this from Mac OS X (I am still on Snow Leopard)
> >>automounting works as expected. I did not have the opportunity yet to
> >>try a Linux box (also do not know whether autofs there has been eaten
> >>by systemd already 8-)).
> >>
> >>Do I miss something, or is this a bug?
> >
> >It's a bug.  Or rather, a missing feature.  The problem here is that
> >the "/" export "shadows" the rest.  To handle this correctly, automountd(8)
> >would need to mount the "/" share, then mount autofs on "/usr" etc, and
> >then call it done.  This part is easy.  The problem is: how to expire
> >(automatically unmount) it?  Because of autofs mounts, the "/" share
> >will always be busy, and thus won't ever get automatically unmounted.
> >So, for now, we don't even try to handle this situation.
> >
> >I'm not sure what would the best way to solve it.
> >
> 
> Maybe the same way as Mac OS X does.
> 
> On my old MacMini (Snow Leopard) I get in a quiescent state, before
> automounting anything:
> 
> /dev/disk0s2 on / (hfs, local, journaled)
> devfs on /dev (devfs, local, nobrowse)
> map -hosts on /net (autofs, nosuid, automounted, nobrowse)
> map auto_home on /home (autofs, automounted, nobrowse)
> 
> Immediately after "ls -l /net/soekris/usr":
> 
> /dev/disk0s2 on / (hfs, local, journaled)
> devfs on /dev (devfs, local, nobrowse)
> map -hosts on /net (autofs, nosuid, automounted, nobrowse)
> map auto_home on /home (autofs, automounted, nobrowse)
> soekris:/ on /net/soekris (nfs, nodev, nosuid, automounted, nobrowse)
> trigger on /net/soekris/usr (autofs, automounted, nobrowse)
> trigger on /net/soekris/var (autofs, automounted, nobrowse)
> trigger on /net/soekris/home (autofs, automounted, nobrowse)
> soekris:/usr on /net/soekris/usr (nfs, nodev, nosuid, automounted, nobrowse)
> 
> Then, after more than 400 seconds:
> 
> /dev/disk0s2 on / (hfs, local, journaled)
> devfs on /dev (devfs, local, nobrowse)
> map -hosts on /net (autofs, nosuid, automounted, nobrowse)
> map auto_home on /home (autofs, automounted, nobrowse)
> soekris:/ on /net/soekris (nfs, nodev, nosuid, automounted, nobrowse)

The problem is, in FreeBSD we would never be able to unmount
the filesystem above (/net/soekris) due to autofs instances below,
which are mounted on top of it:

> trigger on /net/soekris/usr (autofs, automounted, nobrowse)
> trigger on /net/soekris/var (autofs, automounted, nobrowse)
> trigger on /net/soekris/home (autofs, automounted, nobrowse)
> 
> and finally after 600 seconds we are back to:
> 
> /dev/disk0s2 on / (hfs, local, journaled)
> devfs on /dev (devfs, local, nobrowse)
> map -hosts on /net (autofs, nosuid, automounted, nobrowse)
> map auto_home on /home (autofs, automounted, nobrowse)
> 
> So triggers for the subdirectories are automounted on their
> automounted parent directory and expiration occurs in steps. BTW, I
> reconfigured the automount timeout as 300s (was 3600s) so I do not
> fully understand why the first time takes at least 400s.
> 
> If you think it is useful I can grab an older Linux box from my
> basement and try to get autofs running on it, to do the same
> experiment. I currently do not have a Solaris installation.

Nah, not really.  I know what the problem is, I'm just not sure
what's te best way to approach it.  And I really like to fix things
the _right_ way.  Give me some time :-)
Received on Thu Sep 04 2014 - 17:41:56 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:51 UTC