aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/devfs
diff options
context:
space:
mode:
authorIan Dowse <iedowse@FreeBSD.org>2001-05-16 18:04:37 +0000
committerIan Dowse <iedowse@FreeBSD.org>2001-05-16 18:04:37 +0000
commit0864ef1e8a449b1533c7e0ea673e9614aaa9a81f (patch)
treed7aaca11b211abc1efdc147eb5280e6a31ca436e /sys/fs/devfs
parent73cf2c3089f11d4b82c44eef06de12f8f86cc47e (diff)
Notes
Diffstat (limited to 'sys/fs/devfs')
-rw-r--r--sys/fs/devfs/devfs_vfsops.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/sys/fs/devfs/devfs_vfsops.c b/sys/fs/devfs/devfs_vfsops.c
index 6ab9cf1755886..2d1aa90e903bb 100644
--- a/sys/fs/devfs/devfs_vfsops.c
+++ b/sys/fs/devfs/devfs_vfsops.c
@@ -118,26 +118,16 @@ devfs_unmount(mp, mntflags, p)
{
int error;
int flags = 0;
- struct vnode *rootvp;
struct devfs_mount *fmp;
- error = devfs_root(mp, &rootvp);
- if (error)
- return (error);
fmp = VFSTODEVFS(mp);
if (mntflags & MNT_FORCE)
flags |= FORCECLOSE;
- if (rootvp->v_usecount > 2) {
- vrele(rootvp);
- return (EBUSY);
- }
- error = vflush(mp, rootvp, flags);
+ /* There is 1 extra root vnode reference from devfs_mount(). */
+ error = vflush(mp, 1, flags);
if (error)
return (error);
devfs_purge(fmp->dm_rootdir);
- vput(rootvp);
- vrele(rootvp);
- vgone(rootvp);
mp->mnt_data = 0;
lockdestroy(&fmp->dm_lock);
free(fmp, M_DEVFS);