svn commit: r345642 - stable/11/sys/fs/nullfs
Konstantin Belousov
kib at FreeBSD.org
Thu Mar 28 13:44:19 UTC 2019
Author: kib
Date: Thu Mar 28 13:44:18 2019
New Revision: 345642
URL: https://svnweb.freebsd.org/changeset/base/345642
Log:
MFC r345376:
nullfs: fix unmounts when filesystem is active.
Modified:
stable/11/sys/fs/nullfs/null_vfsops.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/fs/nullfs/null_vfsops.c
==============================================================================
--- stable/11/sys/fs/nullfs/null_vfsops.c Thu Mar 28 13:42:37 2019 (r345641)
+++ stable/11/sys/fs/nullfs/null_vfsops.c Thu Mar 28 13:44:18 2019 (r345642)
@@ -236,7 +236,7 @@ nullfs_unmount(mp, mntflags)
{
struct null_mount *mntdata;
struct mount *ump;
- int error, flags;
+ int error, flags, rootrefs;
NULLFSDEBUG("nullfs_unmount: mp = %p\n", (void *)mp);
@@ -245,10 +245,20 @@ nullfs_unmount(mp, mntflags)
else
flags = 0;
- /* There is 1 extra root vnode reference (nullm_rootvp). */
- error = vflush(mp, 1, flags, curthread);
- if (error)
- return (error);
+ for (rootrefs = 1;; rootrefs = 0) {
+ /* There is 1 extra root vnode reference (nullm_rootvp). */
+ error = vflush(mp, rootrefs, flags, curthread);
+ if (error)
+ return (error);
+ MNT_ILOCK(mp);
+ if (mp->mnt_nvnodelistsize == 0) {
+ MNT_IUNLOCK(mp);
+ break;
+ }
+ MNT_IUNLOCK(mp);
+ if ((mntflags & MNT_FORCE) == 0)
+ return (EBUSY);
+ }
/*
* Finally, throw away the null_mount structure
More information about the svn-src-stable-11
mailing list