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++;
 
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to