Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Revert r255797. The LK_UPGRADE | LK_NOWAIT drops the lock.

Approved by:	re (marius, implicit)
  • Loading branch information...
commit 752a7a786f64701363c2727c927615419313b0d0 1 parent 5252c8b
@kostikbel kostikbel authored
Showing with 2 additions and 14 deletions.
  1. +2 −14 sys/kern/vfs_bio.c
View
16 sys/kern/vfs_bio.c
@@ -2624,8 +2624,6 @@ flushbufqueues(struct vnode *lvp, int target, int flushdeps)
int hasdeps;
int flushed;
int queue;
- int error;
- bool unlock;
flushed = 0;
queue = QUEUE_DIRTY;
@@ -2701,16 +2699,7 @@ flushbufqueues(struct vnode *lvp, int target, int flushdeps)
BUF_UNLOCK(bp);
continue;
}
- if (lvp == NULL) {
- unlock = true;
- error = vn_lock(vp, LK_EXCLUSIVE | LK_NOWAIT);
- } else {
- ASSERT_VOP_LOCKED(vp, "getbuf");
- unlock = false;
- error = VOP_ISLOCKED(vp) == LK_EXCLUSIVE ? 0 :
- vn_lock(vp, LK_UPGRADE | LK_NOWAIT);
- }
- if (error == 0) {
+ if (vn_lock(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_CANRECURSE) == 0) {
mtx_unlock(&bqdirty);
CTR3(KTR_BUF, "flushbufqueue(%p) vp %p flags %X",
bp, bp->b_vp, bp->b_flags);
@@ -2722,8 +2711,7 @@ flushbufqueues(struct vnode *lvp, int target, int flushdeps)
notbufdflushes++;
}
vn_finished_write(mp);
- if (unlock)
- VOP_UNLOCK(vp, 0);
+ VOP_UNLOCK(vp, 0);
flushwithdeps += hasdeps;
flushed++;
Please sign in to comment.
Something went wrong with that request. Please try again.