diff options
author | jeff <jeff@FreeBSD.org> | 2002-07-29 06:26:55 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2002-07-29 06:26:55 +0000 |
commit | 5dce00d8f10cc8069a67ca4bc4a8100a64145dd4 (patch) | |
tree | 0fd73c1d6c1f669ce97dc90799c55e6bb1208e7f | |
parent | ca32cecfcfe6ceb74d047ffd192584fc8c38fe1c (diff) | |
download | FreeBSD-src-5dce00d8f10cc8069a67ca4bc4a8100a64145dd4.zip FreeBSD-src-5dce00d8f10cc8069a67ca4bc4a8100a64145dd4.tar.gz |
- Backout the patch made in revision 1.75 of vfs_mount.c. The vputs here
were hiding the real problem of the missing unlock in sync_inactive.
- Add the missing unlock in sync_inactive.
Submitted by: iedowse
-rw-r--r-- | sys/kern/vfs_mount.c | 6 | ||||
-rw-r--r-- | sys/kern/vfs_subr.c | 1 |
2 files changed, 4 insertions, 3 deletions
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index bdfb1c6..1f6e1d9 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -709,7 +709,7 @@ update: error = vfs_allocate_syncvnode(mp); } else { if (mp->mnt_syncer != NULL) - vput(mp->mnt_syncer); + vrele(mp->mnt_syncer); mp->mnt_syncer = NULL; } vfs_unbusy(mp, td); @@ -1052,7 +1052,7 @@ update: error = vfs_allocate_syncvnode(mp); } else { if (mp->mnt_syncer != NULL) - vput(mp->mnt_syncer); + vrele(mp->mnt_syncer); mp->mnt_syncer = NULL; } vfs_unbusy(mp, td); @@ -1252,7 +1252,7 @@ dounmount(mp, flags, td) mp->mnt_flag &=~ MNT_ASYNC; cache_purgevfs(mp); /* remove cache entries for this file sys */ if (mp->mnt_syncer != NULL) - vput(mp->mnt_syncer); + vrele(mp->mnt_syncer); /* Move process cdir/rdir refs on fs root to underlying vnode. */ if (VFS_ROOT(mp, &fsrootvp) == 0) { if (mp->mnt_vnodecovered != NULL) diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 1684782..c0b2ace 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -3080,6 +3080,7 @@ sync_inactive(ap) } */ *ap; { + VOP_UNLOCK(ap->a_vp, 0, ap->a_td); vgone(ap->a_vp); return (0); } |