Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Nov 2009 02:46:21 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r199305 - user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <200911160246.nAG2kLTb055157@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Mon Nov 16 02:46:21 2009
New Revision: 199305
URL: http://svn.freebsd.org/changeset/base/199305

Log:
  fix logic for end of arc_gbincore_replace

Modified:
  user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c

Modified: user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Mon Nov 16 00:17:11 2009	(r199304)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Mon Nov 16 02:46:21 2009	(r199305)
@@ -1306,7 +1306,6 @@ arc_gbincore_replace(struct vnode *vp, o
 {
 	struct buf *bp;
 	struct bufobj *bo;
-	int associated = 0;
 
 	/*
 	 * We need to be careful to handle the case where the buffer
@@ -1342,24 +1341,30 @@ arc_gbincore_replace(struct vnode *vp, o
 				bremfree(bp);
 				if (bp->b_bcount != size)
 					allocbuf_flags(bp, size, flags);
-				associated = 1;
+				goto done;
 			}
 		}
 	}
 
-	if (!associated) {
-		if (newbp != NULL) {
-			if (bp != NULL)
-				BO_LOCK(bo);
-			bgetvp(vp, newbp);
-			BO_UNLOCK(bo);
-			bp = newbp;
-		} else {
+	/*
+	 *   	   !bp    		brelvp(bp)  	brelse(bp)	associated  
+	 * !newbp  unlock()/getblk 	getblk	    	XXX		no-op	  	
+	 *
+	 * newbp  bgetvp()/ul		l/bgetvp()/ul	l/bgetvp()/ul	XXX
+	 */
+	if (newbp != NULL) {
+		if (bp != NULL)
+			BO_LOCK(bo);
+		bgetvp(vp, newbp);
+		BO_UNLOCK(bo);
+		bp = newbp;
+	} else {
+		if (bp == NULL) 
 			BO_UNLOCK(bo);
-			bp = getblk(vp, blkno, size, 0, 0, flags);
-		}
+		bp = getblk(vp, blkno, size, 0, 0, flags);
 	} 
 
+done:
 	return (bp);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911160246.nAG2kLTb055157>