Bug 251395 - usr.sbin/autofs: autounmountd does not clear entries in /var/db/mounttab (was: rc.d/nfsclient: hangs at shutdown because of non-empty /var/db/mounttab)
Summary: usr.sbin/autofs: autounmountd does not clear entries in /var/db/mounttab (was...
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: bin (show other bugs)
Version: 12.2-RELEASE
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-rc (Nobody)
URL: https://reviews.freebsd.org/D27801
Keywords:
Depends on:
Blocks:
 
Reported: 2020-11-26 07:10 UTC by Martin Birgmeier
Modified: 2020-12-28 13:07 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Birgmeier 2020-11-26 07:10:22 UTC
Scenario:
- multiple machines using NFS and autofs (automount)
- some of them running FreeBSD 12.2, the others 12.1
- at the end of the day they are shut down simultaneously; before that, it is ensured that all NFS mounts are unmounted (using automount -u and checking via "df -t nfs")

Result:
- The 12.2 machine hangs in the rc.d/nfsclient script with repeated error messages indicating it cannot contact the remote portmapper: the remote portmapper does not reply anymore because that machine is also going down.
- This happens because the file /var/db/mounttab is non-empty and still indicates the remote NFS servers despite the fact that all NFS mounts have already been unmounted.

Expected result:
- After the last NFS mount from a server has been unmounted, the corresponding entry in /var/db/mounttab, and the complete file if empty, should be removed.
- This should enable rc.d/nfsclient to skip any further NFS server notification during shutdown.

-- Martin
Comment 1 Martin Birgmeier 2020-12-07 10:54:39 UTC
It seems that the problem with rc.d/nfsclient hanging is that the autounmountd (part of autofs) does not remove entries from /var/db/mounttab, where the regular umount command does.

In this way, even if there are no NFS mounts anymore, entries accumulate in /var/db/mounttab.

It is possible to manually mount a remote dir (e.g., on /mnt) and then unmount it again, and this will remove all the corresponding entries from /var/db/mounttab.

Therefore, it seems that autounmountd needs to be fixed to remove entries from /var/db/mounttab.

-- Martin