Page MenuHomeFreeBSD

D35477.diff
No OneTemporary

D35477.diff

diff --git a/sys/fs/nullfs/null_vnops.c b/sys/fs/nullfs/null_vnops.c
--- a/sys/fs/nullfs/null_vnops.c
+++ b/sys/fs/nullfs/null_vnops.c
@@ -989,9 +989,11 @@
locked = VOP_ISLOCKED(vp);
lvp = NULLVPTOLOWERVP(vp);
- vhold(lvp);
mp = vp->v_mount;
- vfs_ref(mp);
+ error = vfs_busy(mp, MBF_NOWAIT);
+ if (error != 0)
+ return (error);
+ vhold(lvp);
VOP_UNLOCK(vp); /* vp is held by vn_vptocnp_locked that called us */
ldvp = lvp;
vref(lvp);
@@ -999,7 +1001,7 @@
vdrop(lvp);
if (error != 0) {
vn_lock(vp, locked | LK_RETRY);
- vfs_rel(mp);
+ vfs_unbusy(mp);
return (ENOENT);
}
@@ -1007,7 +1009,7 @@
if (error != 0) {
vrele(ldvp);
vn_lock(vp, locked | LK_RETRY);
- vfs_rel(mp);
+ vfs_unbusy(mp);
return (ENOENT);
}
error = null_nodeget(mp, ldvp, dvp);
@@ -1018,7 +1020,7 @@
VOP_UNLOCK(*dvp); /* keep reference on *dvp */
}
vn_lock(vp, locked | LK_RETRY);
- vfs_rel(mp);
+ vfs_unbusy(mp);
return (error);
}

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 11, 4:25 PM (19 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15755532
Default Alt Text
D35477.diff (959 B)

Event Timeline