From owner-svn-src-user@FreeBSD.ORG  Tue Nov 17 06:32:57 2009
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 65098106566C;
	Tue, 17 Nov 2009 06:32:57 +0000 (UTC)
	(envelope-from kmacy@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 396FD8FC15;
	Tue, 17 Nov 2009 06:32:57 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nAH6Wv3Y093756;
	Tue, 17 Nov 2009 06:32:57 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nAH6WvX9093754;
	Tue, 17 Nov 2009 06:32:57 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911170632.nAH6WvX9093754@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 17 Nov 2009 06:32:57 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r199346 -
	user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2009 06:32:57 -0000

Author: kmacy
Date: Tue Nov 17 06:32:56 2009
New Revision: 199346
URL: http://svn.freebsd.org/changeset/base/199346

Log:
  don't bgetvp on a new buffer if the blkno is not set

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	Tue Nov 17 05:59:26 2009	(r199345)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov 17 06:32:56 2009	(r199346)
@@ -495,8 +495,6 @@ static void arc_get_data_buf(arc_buf_t *
 static void arc_access(arc_buf_hdr_t *buf, kmutex_t *hash_lock);
 static int arc_evict_needed(arc_buf_contents_t type);
 static void arc_evict_ghost(arc_state_t *state, spa_t *spa, int64_t bytes);
-static void arc_binval(arc_buf_t *buf, off_t blkno, struct vnode *vp,
-    size_t size, int flags, struct buf *bp);
 
 #define	GHOST_STATE(state)						\
 	((state) == arc_mru_ghost || (state) == arc_mfu_ghost ||	\
@@ -1303,7 +1301,7 @@ arc_buf_add_ref(arc_buf_t *buf, void* ta
 static void
 arc_bgetvp(arc_buf_t *buf)
 {	
-	off_t blkno = buf->b_hdr->b_dva.dva_word[1] & ~(1UL<<63);
+	uint64_t blkno = buf->b_hdr->b_dva.dva_word[1] & ~(1UL<<63);
 	struct buf *bp = buf->b_bp;
 	struct vnode *vp = spa_get_vnode(buf->b_hdr->b_spa);
 	struct bufobj *bo = &vp->v_bufobj;
@@ -1338,9 +1336,11 @@ arc_bgetvp(arc_buf_t *buf)
 		} else
 			brelse(bp);
 	} else {
-		buf->b_bp->b_flags |= B_CACHE;
-		buf->b_bp->b_flags &= ~B_INVAL;
-		bgetvp(vp, buf->b_bp);
+		if (blkno != 0) {
+			buf->b_bp->b_flags |= B_CACHE;
+			buf->b_bp->b_flags &= ~B_INVAL;
+			bgetvp(vp, buf->b_bp);
+		}
 		BO_UNLOCK(bo);
 	}
 	
@@ -1352,7 +1352,7 @@ arc_getblk(arc_buf_t *buf)
 	uint64_t		size = buf->b_hdr->b_size;
 	arc_buf_contents_t	type = buf->b_hdr->b_type;
 	spa_t			*spa = buf->b_hdr->b_spa;
-	off_t blkno = buf->b_hdr->b_dva.dva_word[1] & ~(1UL<<63);
+	uint64_t blkno = buf->b_hdr->b_dva.dva_word[1] & ~(1UL<<63);
 	void *data;
 	struct buf *newbp, *bp;
 	arc_buf_t *tbuf;
@@ -3385,7 +3385,7 @@ arc_write_done(zio_t *zio)
 		 */
 		struct buf *bp = buf->b_bp;
 		struct vnode *vp = spa_get_vnode(hdr->b_spa);
-		off_t blkno = hdr->b_dva.dva_word[1] & ~(1UL<<63);	
+		uint64_t blkno = hdr->b_dva.dva_word[1] & ~(1UL<<63);	
 
 		CTR3(KTR_SPARE2, "arc_write_done() bp=%p flags %X blkno %ld",
 		    bp, bp ? bp->b_flags : 0, blkno);