Date: Sun, 22 Sep 2013 20:29:04 +0000 (UTC) From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r255800 - head/sys/kern Message-ID: <201309222029.r8MKT45U055492@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kib Date: Sun Sep 22 20:29:03 2013 New Revision: 255800 URL: http://svnweb.freebsd.org/changeset/base/255800 Log: Revert r255797. The LK_UPGRADE | LK_NOWAIT drops the lock. Approved by: re (marius, implicit) Modified: head/sys/kern/vfs_bio.c Modified: head/sys/kern/vfs_bio.c ============================================================================== --- head/sys/kern/vfs_bio.c Sun Sep 22 20:22:08 2013 (r255799) +++ head/sys/kern/vfs_bio.c Sun Sep 22 20:29:03 2013 (r255800) @@ -2624,8 +2624,6 @@ flushbufqueues(struct vnode *lvp, int ta int hasdeps; int flushed; int queue; - int error; - bool unlock; flushed = 0; queue = QUEUE_DIRTY; @@ -2701,16 +2699,7 @@ flushbufqueues(struct vnode *lvp, int ta 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 ta notbufdflushes++; } vn_finished_write(mp); - if (unlock) - VOP_UNLOCK(vp, 0); + VOP_UNLOCK(vp, 0); flushwithdeps += hasdeps; flushed++;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309222029.r8MKT45U055492>