summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2003-08-28 15:48:15 +0000
committerkan <kan@FreeBSD.org>2003-08-28 15:48:15 +0000
commit96bae694ed39fd027a149178c08fbdd83765138b (patch)
tree80f90efb1444778a8c36b472ca7c6878ac8c8258
parent66f7142c64a948eae88f9d1692f0b37c5be14c52 (diff)
downloadFreeBSD-src-96bae694ed39fd027a149178c08fbdd83765138b.zip
FreeBSD-src-96bae694ed39fd027a149178c08fbdd83765138b.tar.gz
Do not return with vnode interlock held.
Reviewed by: rwatson
-rw-r--r--sys/kern/vfs_bio.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index 296c9a6..77f47cb 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -779,6 +779,7 @@ bwrite(struct buf * bp)
VI_LOCK(bp->b_vp);
if (bp->b_vflags & BV_BKGRDINPROG) {
if (bp->b_flags & B_ASYNC) {
+ VI_UNLOCK(bp->b_vp);
splx(s);
bdwrite(bp);
return (0);
@@ -1505,6 +1506,7 @@ bqrelse(struct buf * bp)
* the buffer (most importantly: the wired pages
* making up its backing store) *now*.
*/
+ VI_UNLOCK(bp->b_vp);
mtx_unlock(&bqlock);
splx(s);
brelse(bp);
OpenPOWER on IntegriCloud