From owner-svn-src-user@FreeBSD.ORG  Sun Nov  1 01:42:45 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 5D28F106566C;
	Sun,  1 Nov 2009 01:42:45 +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 32D098FC0C;
	Sun,  1 Nov 2009 01:42:45 +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 nA11gjfI009438;
	Sun, 1 Nov 2009 01:42:45 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA11gjhf009436;
	Sun, 1 Nov 2009 01:42:45 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911010142.nA11gjhf009436@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Sun, 1 Nov 2009 01:42:45 +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: r198735 -
	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: Sun, 01 Nov 2009 01:42:45 -0000

Author: kmacy
Date: Sun Nov  1 01:42:44 2009
New Revision: 198735
URL: http://svn.freebsd.org/changeset/base/198735

Log:
  - free ZFS resources on shutdown
  - fix eventhandler call
  - use private KTR flag

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	Sat Oct 31 22:50:29 2009	(r198734)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Sun Nov  1 01:42:44 2009	(r198735)
@@ -1347,7 +1347,7 @@ arc_getblk(arc_buf_t *buf)
 	} else
 		newbp = getblk(spa_get_vnode(spa), blkno,
 		    size, 0, 0, flags);
-	CTR2(KTR_BUF, "arc_getblk() bp=%p flags %X",
+	CTR2(KTR_SPARE2, "arc_getblk() bp=%p flags %X",
 	    newbp, newbp->b_flags);
 
 	BUF_KERNPROC(newbp);
@@ -1363,6 +1363,8 @@ arc_brelse(arc_buf_t *buf, void *data, s
 	if (buf->b_bp->b_vp)
 		KASSERT(buf->b_bp->b_xflags & BX_VNCLEAN, ("brelse() on buffer that is not in splay"));
 #endif	
+	CTR3(KTR_SPARE2, "arc_brelse() bp=%p flags %X size %ld",
+	    buf->b_bp, buf->b_bp->b_flags, size);
 	brelse(buf->b_bp);
 }
 
@@ -3325,7 +3327,7 @@ arc_write_done(zio_t *zio)
 		struct vnode *vp = spa_get_vnode(hdr->b_spa);
 		off_t blkno = hdr->b_dva.dva_word[1] & ~(1UL<<63);	
 
-		CTR2(KTR_BUF, "arc_write_done(%p) flags %X",
+		CTR2(KTR_SPARE2, "arc_write_done(%p) flags %X",
 		    bp, bp->b_flags);
 
 		if ((hdr->b_buf == buf) &&
@@ -3677,7 +3679,6 @@ arc_shutdown(void *arg __unused, int how
 	struct mount *mp, *tmpmp;
 	int error;
 
-	arc_flush(NULL);
 	TAILQ_FOREACH_SAFE(mp, &mountlist, mnt_list, tmpmp) {
 		if (strcmp(mp->mnt_vfc->vfc_name, "zfs") == 0) {
 			error = dounmount(mp, MNT_FORCE, curthread);
@@ -3693,6 +3694,14 @@ arc_shutdown(void *arg __unused, int how
 		}
 		
 	}
+	arc_flush(NULL);
+
+#if 0	
+	zfsdev_fini();
+	zvol_fini();
+	zfs_fini();
+#endif	
+	spa_fini();
 }
 
 #endif
@@ -3821,7 +3830,7 @@ arc_init(void)
 	arc_event_lowmem = EVENTHANDLER_REGISTER(vm_lowmem, arc_lowmem,
 	    NULL, EVENTHANDLER_PRI_FIRST);
 	arc_event_shutdown = EVENTHANDLER_REGISTER(shutdown_pre_sync,
-	    arc_event_shutdown, NULL, EVENTHANDLER_PRI_FIRST);
+	    arc_shutdown, NULL, EVENTHANDLER_PRI_FIRST);
 #endif
 
 	arc_dead = FALSE;

From owner-svn-src-user@FreeBSD.ORG  Sun Nov  1 02:21:21 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 8A4D31065679;
	Sun,  1 Nov 2009 02:21:21 +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 79D678FC15;
	Sun,  1 Nov 2009 02:21:21 +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 nA12LLve010379;
	Sun, 1 Nov 2009 02:21:21 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA12LLD7010377;
	Sun, 1 Nov 2009 02:21:21 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911010221.nA12LLD7010377@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Sun, 1 Nov 2009 02:21:21 +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: r198736 - user/kmacy/releng_8_fcs_buf/sys/kern
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: Sun, 01 Nov 2009 02:21:21 -0000

Author: kmacy
Date: Sun Nov  1 02:21:21 2009
New Revision: 198736
URL: http://svn.freebsd.org/changeset/base/198736

Log:
  give more information on splay lookup failure

Modified:
  user/kmacy/releng_8_fcs_buf/sys/kern/vfs_subr.c

Modified: user/kmacy/releng_8_fcs_buf/sys/kern/vfs_subr.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/kern/vfs_subr.c	Sun Nov  1 01:42:44 2009	(r198735)
+++ user/kmacy/releng_8_fcs_buf/sys/kern/vfs_subr.c	Sun Nov  1 02:21:21 2009	(r198736)
@@ -1454,7 +1454,8 @@ buf_vlist_remove(struct buf *bp)
 		bv = &bp->b_bufobj->bo_clean;
 	if (bp != bv->bv_root) {
 		root = buf_splay(bp->b_lblkno, bp->b_xflags, bv->bv_root);
-		KASSERT(root == bp, ("splay lookup failed in remove"));
+
+		KASSERT(root == bp, ("splay lookup failed in remove bp=%p lblkno=%ld blkno=%ld", bp, bp->b_lblkno, bp->b_blkno));
 	}
 	if (bp->b_left == NULL) {
 		root = bp->b_right;

From owner-svn-src-user@FreeBSD.ORG  Sun Nov  1 02:22:44 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 9D79B1065670;
	Sun,  1 Nov 2009 02:22:44 +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 8CADF8FC16;
	Sun,  1 Nov 2009 02:22:44 +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 nA12MiDq010456;
	Sun, 1 Nov 2009 02:22:44 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA12MibS010454;
	Sun, 1 Nov 2009 02:22:44 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911010222.nA12MibS010454@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Sun, 1 Nov 2009 02:22:44 +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: r198737 -
	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: Sun, 01 Nov 2009 02:22:44 -0000

Author: kmacy
Date: Sun Nov  1 02:22:44 2009
New Revision: 198737
URL: http://svn.freebsd.org/changeset/base/198737

Log:
  improve ktr logging for brelse

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	Sun Nov  1 02:21:21 2009	(r198736)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Sun Nov  1 02:22:44 2009	(r198737)
@@ -1328,10 +1328,9 @@ arc_getblk(arc_buf_t *buf)
 		newbp->b_offset = (blkno<<9);	
 
 		if (bp->b_vp != NULL) {			
-			KASSERT(bp->b_xflags & BX_VNCLEAN, ("brelvp() on buffer that is not in splay"));
+			KASSERT((bp->b_xflags & (BX_VNCLEAN|BX_VNDIRTY)) == BX_VNCLEAN, ("brelvp() on buffer that is not in splay"));
 			brelvp(bp);
 		}
-		
 		BO_LOCK(&vp->v_bufobj);
 		bgetvp(vp, newbp);
 		BO_UNLOCK(&vp->v_bufobj);
@@ -1358,14 +1357,16 @@ arc_getblk(arc_buf_t *buf)
 static void
 arc_brelse(arc_buf_t *buf, void *data, size_t size)
 {
+	struct buf *bp;
 
 #ifdef INVARIANTS
 	if (buf->b_bp->b_vp)
-		KASSERT(buf->b_bp->b_xflags & BX_VNCLEAN, ("brelse() on buffer that is not in splay"));
+		KASSERT((buf->b_bp->b_xflags & (BX_VNCLEAN|BX_VNDIRTY)) == BX_VNCLEAN, ("brelse() on buffer that is not clean"));
 #endif	
-	CTR3(KTR_SPARE2, "arc_brelse() bp=%p flags %X size %ld",
-	    buf->b_bp, buf->b_bp->b_flags, size);
-	brelse(buf->b_bp);
+	bp = buf->b_bp;
+	CTR5(KTR_SPARE2, "arc_brelse() bp=%p flags %X size %ld lblkno=%ld blkno=%ld",
+	    bp, bp->b_flags, size, bp->b_lblkno, bp->b_blkno);
+	brelse(bp);
 }
 
 /*

From owner-svn-src-user@FreeBSD.ORG  Sun Nov  1 04:20:06 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 66C5D106566B;
	Sun,  1 Nov 2009 04:20:06 +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 55B878FC13;
	Sun,  1 Nov 2009 04:20:06 +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 nA14K6ia012986;
	Sun, 1 Nov 2009 04:20:06 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA14K6cB012984;
	Sun, 1 Nov 2009 04:20:06 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911010420.nA14K6cB012984@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Sun, 1 Nov 2009 04:20:06 +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: r198738 -
	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: Sun, 01 Nov 2009 04:20:06 -0000

Author: kmacy
Date: Sun Nov  1 04:20:06 2009
New Revision: 198738
URL: http://svn.freebsd.org/changeset/base/198738

Log:
  do brelvp early

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	Sun Nov  1 02:22:44 2009	(r198737)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Sun Nov  1 04:20:06 2009	(r198738)
@@ -1359,11 +1359,14 @@ arc_brelse(arc_buf_t *buf, void *data, s
 {
 	struct buf *bp;
 
+	bp = buf->b_bp;
 #ifdef INVARIANTS
-	if (buf->b_bp->b_vp)
+	if (bp->b_vp) {
 		KASSERT((buf->b_bp->b_xflags & (BX_VNCLEAN|BX_VNDIRTY)) == BX_VNCLEAN, ("brelse() on buffer that is not clean"));
+		brelvp(bp);
+	}
 #endif	
-	bp = buf->b_bp;
+	
 	CTR5(KTR_SPARE2, "arc_brelse() bp=%p flags %X size %ld lblkno=%ld blkno=%ld",
 	    bp, bp->b_flags, size, bp->b_lblkno, bp->b_blkno);
 	brelse(bp);

From owner-svn-src-user@FreeBSD.ORG  Sun Nov  1 04:43:36 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 2353A106566C;
	Sun,  1 Nov 2009 04:43:36 +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 126058FC19;
	Sun,  1 Nov 2009 04:43:36 +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 nA14hZut013398;
	Sun, 1 Nov 2009 04:43:35 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA14hZdO013396;
	Sun, 1 Nov 2009 04:43:35 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911010443.nA14hZdO013396@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Sun, 1 Nov 2009 04:43:35 +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: r198739 -
	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: Sun, 01 Nov 2009 04:43:36 -0000

Author: kmacy
Date: Sun Nov  1 04:43:35 2009
New Revision: 198739
URL: http://svn.freebsd.org/changeset/base/198739

Log:
  don't associate a buffer with the backing vnode unless it is not present in the ARC

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	Sun Nov  1 04:20:06 2009	(r198738)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Sun Nov  1 04:43:35 2009	(r198739)
@@ -3334,22 +3334,6 @@ arc_write_done(zio_t *zio)
 		CTR2(KTR_SPARE2, "arc_write_done(%p) flags %X",
 		    bp, bp->b_flags);
 
-		if ((hdr->b_buf == buf) &&
-		    (bp->b_bufobj == NULL)) {
-
-			bp->b_bufobj = &vp->v_bufobj;
-			bp->b_lblkno = blkno;
-			bp->b_blkno = blkno;
-			bp->b_offset = (blkno << 9);
-			BO_LOCK(bp->b_bufobj);
-			bgetvp(vp, bp);
-			BO_UNLOCK(bp->b_bufobj);
-			bp->b_flags &= ~B_INVAL;
-			bp->b_flags |= B_CACHE;
-		}
-
-		/*
-		 */
 		arc_cksum_verify(buf);
 
 		exists = buf_hash_insert(hdr, &hash_lock);
@@ -3371,7 +3355,20 @@ arc_write_done(zio_t *zio)
 			arc_hdr_destroy(exists);
 			exists = buf_hash_insert(hdr, &hash_lock);
 			ASSERT3P(exists, ==, NULL);
+		} else if ((hdr->b_buf == buf) &&
+		    (bp->b_bufobj == NULL)) {
+
+			bp->b_bufobj = &vp->v_bufobj;
+			bp->b_lblkno = blkno;
+			bp->b_blkno = blkno;
+			bp->b_offset = (blkno << 9);
+			BO_LOCK(bp->b_bufobj);
+			bgetvp(vp, bp);
+			BO_UNLOCK(bp->b_bufobj);
+			bp->b_flags &= ~B_INVAL;
+			bp->b_flags |= B_CACHE;
 		}
+
 		hdr->b_flags &= ~ARC_IO_IN_PROGRESS;
 		/* if it's not anon, we are doing a scrub */
 		if (hdr->b_state == arc_anon)

From owner-svn-src-user@FreeBSD.ORG  Sun Nov  1 04:57:42 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 0287C1065676;
	Sun,  1 Nov 2009 04:57:42 +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 E62678FC08;
	Sun,  1 Nov 2009 04:57:41 +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 nA14vf26013745;
	Sun, 1 Nov 2009 04:57:41 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA14vfZL013743;
	Sun, 1 Nov 2009 04:57:41 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911010457.nA14vfZL013743@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Sun, 1 Nov 2009 04:57:41 +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: r198740 - user/kmacy/releng_8_fcs_buf/sys/kern
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: Sun, 01 Nov 2009 04:57:42 -0000

Author: kmacy
Date: Sun Nov  1 04:57:41 2009
New Revision: 198740
URL: http://svn.freebsd.org/changeset/base/198740

Log:
  don't stall the whole system with gratuitous calcru printfs

Modified:
  user/kmacy/releng_8_fcs_buf/sys/kern/kern_resource.c

Modified: user/kmacy/releng_8_fcs_buf/sys/kern/kern_resource.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/kern/kern_resource.c	Sun Nov  1 04:43:35 2009	(r198739)
+++ user/kmacy/releng_8_fcs_buf/sys/kern/kern_resource.c	Sun Nov  1 04:57:41 2009	(r198740)
@@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sx.h>
 #include <sys/syscallsubr.h>
 #include <sys/sysent.h>
+#include <sys/syslog.h>
 #include <sys/time.h>
 #include <sys/umtx.h>
 
@@ -900,7 +901,8 @@ calcru1(struct proc *p, struct rusage_ex
 		 * serious, so lets keep it and hope laptops can be made
 		 * more truthful about their CPU speed via ACPI.
 		 */
-		printf("calcru: runtime went backwards from %ju usec "
+		log(LOG_WARNING,
+		    "calcru: runtime went backwards from %ju usec "
 		    "to %ju usec for pid %d (%s)\n",
 		    (uintmax_t)ruxp->rux_tu, (uintmax_t)tu,
 		    p->p_pid, p->p_comm);

From owner-svn-src-user@FreeBSD.ORG  Sun Nov  1 23:59:23 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 CF52E106566B;
	Sun,  1 Nov 2009 23:59:23 +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 BE9EF8FC0C;
	Sun,  1 Nov 2009 23:59:23 +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 nA1NxNiX038968;
	Sun, 1 Nov 2009 23:59:23 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA1NxN2Y038966;
	Sun, 1 Nov 2009 23:59:23 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911012359.nA1NxN2Y038966@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Sun, 1 Nov 2009 23:59:23 +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: r198777 -
	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: Sun, 01 Nov 2009 23:59:23 -0000

Author: kmacy
Date: Sun Nov  1 23:59:23 2009
New Revision: 198777
URL: http://svn.freebsd.org/changeset/base/198777

Log:
  if a block is already cached we need to free the corresponding buffer

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	Sun Nov  1 21:48:18 2009	(r198776)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Sun Nov  1 23:59:23 2009	(r198777)
@@ -3357,14 +3357,21 @@ arc_write_done(zio_t *zio)
 			ASSERT3P(exists, ==, NULL);
 		} else if ((hdr->b_buf == buf) &&
 		    (bp->b_bufobj == NULL)) {
+			struct buf *oldbp;
+			struct bufobj *bo;
 
-			bp->b_bufobj = &vp->v_bufobj;
+			oldbp = getblk(vp, blkno, bp->b_bcount, 0, 0, GB_NOCREAT);
+			if (oldbp != NULL) {
+				oldbp->b_flags |= B_INVAL;
+				brelse(oldbp);
+			}
+			bo = bp->b_bufobj = &vp->v_bufobj;
 			bp->b_lblkno = blkno;
 			bp->b_blkno = blkno;
 			bp->b_offset = (blkno << 9);
-			BO_LOCK(bp->b_bufobj);
+			BO_LOCK(bo);
 			bgetvp(vp, bp);
-			BO_UNLOCK(bp->b_bufobj);
+			BO_UNLOCK(bo);
 			bp->b_flags &= ~B_INVAL;
 			bp->b_flags |= B_CACHE;
 		}

From owner-svn-src-user@FreeBSD.ORG  Mon Nov  2 00:26: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 072471065693;
	Mon,  2 Nov 2009 00:26: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 CB83D8FC18;
	Mon,  2 Nov 2009 00:26:56 +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 nA20QuMm039655;
	Mon, 2 Nov 2009 00:26:56 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA20QuGi039653;
	Mon, 2 Nov 2009 00:26:56 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911020026.nA20QuGi039653@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Mon, 2 Nov 2009 00:26:56 +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: r198778 -
	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: Mon, 02 Nov 2009 00:26:57 -0000

Author: kmacy
Date: Mon Nov  2 00:26:56 2009
New Revision: 198778
URL: http://svn.freebsd.org/changeset/base/198778

Log:
  - ensure that we find the right buffer to call brelvp on

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	Sun Nov  1 23:59:23 2009	(r198777)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Mon Nov  2 00:26:56 2009	(r198778)
@@ -1312,12 +1312,22 @@ arc_getblk(arc_buf_t *buf)
 	if (buf->b_hdr->b_flags & ARC_BUF_CLONING) {
 		newbp = geteblk(size, flags);
 		tbuf = buf;
-
-		while (tbuf->b_next != NULL)
-			tbuf = tbuf->b_next;		
-		bp = tbuf->b_bp;
 		vp = spa_get_vnode(spa);
 
+		bcopy(buf->b_bp->b_data, newbp->b_data, size);
+		while (tbuf->b_next != NULL) {
+			if (tbuf->b_bp->b_vp != NULL) {
+				KASSERT((bp->b_xflags & (BX_VNCLEAN|BX_VNDIRTY)) == BX_VNCLEAN, ("brelvp() on buffer that is not in splay"));
+
+				bp = tbuf->b_bp;
+				bp->b_flags |= B_INVAL;
+				bp->b_flags &= ~B_CACHE;
+				brelvp(bp);
+				break;
+			}
+			tbuf = tbuf->b_next;
+		}
+
 		KASSERT((bp->b_blkno == bp->b_lblkno) &&
 		    (bp->b_blkno == blkno),
 		    ("blkno mismatch b_blkno %ld b_lblkno %ld blkno %ld",
@@ -1327,18 +1337,11 @@ arc_getblk(arc_buf_t *buf)
 		newbp->b_blkno = blkno;
 		newbp->b_offset = (blkno<<9);	
 
-		if (bp->b_vp != NULL) {			
-			KASSERT((bp->b_xflags & (BX_VNCLEAN|BX_VNDIRTY)) == BX_VNCLEAN, ("brelvp() on buffer that is not in splay"));
-			brelvp(bp);
-		}
 		BO_LOCK(&vp->v_bufobj);
 		bgetvp(vp, newbp);
 		BO_UNLOCK(&vp->v_bufobj);
 		newbp->b_flags &= ~B_INVAL;
 		newbp->b_flags |= B_CACHE;
-		bp->b_flags |= B_INVAL;
-		bp->b_flags &= ~B_CACHE;
-		bcopy(bp->b_data, newbp->b_data, size);
 		buf->b_hdr->b_flags &= ~ARC_BUF_CLONING;
 		
 	} else if (BUF_EMPTY(buf->b_hdr)) {

From owner-svn-src-user@FreeBSD.ORG  Mon Nov  2 00:41:10 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 A86C0106566C;
	Mon,  2 Nov 2009 00:41:10 +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 97BF88FC08;
	Mon,  2 Nov 2009 00:41:10 +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 nA20fAsc039961;
	Mon, 2 Nov 2009 00:41:10 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA20fAWS039959;
	Mon, 2 Nov 2009 00:41:10 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911020041.nA20fAWS039959@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Mon, 2 Nov 2009 00:41:10 +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: r198779 -
	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: Mon, 02 Nov 2009 00:41:10 -0000

Author: kmacy
Date: Mon Nov  2 00:41:10 2009
New Revision: 198779
URL: http://svn.freebsd.org/changeset/base/198779

Log:
  avoid doing KASSERT with null bp

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  2 00:26:56 2009	(r198778)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Mon Nov  2 00:41:10 2009	(r198779)
@@ -1314,7 +1314,12 @@ arc_getblk(arc_buf_t *buf)
 		tbuf = buf;
 		vp = spa_get_vnode(spa);
 
-		bcopy(buf->b_bp->b_data, newbp->b_data, size);
+		bp = buf->b_bp;
+		bcopy(bp->b_data, newbp->b_data, size);
+		KASSERT((bp->b_blkno == bp->b_lblkno) &&
+		    (bp->b_blkno == blkno),
+		    ("blkno mismatch b_blkno %ld b_lblkno %ld blkno %ld",
+			bp->b_blkno, bp->b_lblkno, blkno));
 		while (tbuf->b_next != NULL) {
 			if (tbuf->b_bp->b_vp != NULL) {
 				KASSERT((bp->b_xflags & (BX_VNCLEAN|BX_VNDIRTY)) == BX_VNCLEAN, ("brelvp() on buffer that is not in splay"));
@@ -1328,10 +1333,6 @@ arc_getblk(arc_buf_t *buf)
 			tbuf = tbuf->b_next;
 		}
 
-		KASSERT((bp->b_blkno == bp->b_lblkno) &&
-		    (bp->b_blkno == blkno),
-		    ("blkno mismatch b_blkno %ld b_lblkno %ld blkno %ld",
-			bp->b_blkno, bp->b_lblkno, blkno));
 		newbp->b_bufobj = &vp->v_bufobj;
 		newbp->b_lblkno = blkno;
 		newbp->b_blkno = blkno;

From owner-svn-src-user@FreeBSD.ORG  Mon Nov  2 22:50:39 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 88DD8106568F;
	Mon,  2 Nov 2009 22:50:39 +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 773538FC0A;
	Mon,  2 Nov 2009 22:50:39 +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 nA2Modxf072426;
	Mon, 2 Nov 2009 22:50:39 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA2Modg1072424;
	Mon, 2 Nov 2009 22:50:39 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911022250.nA2Modg1072424@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Mon, 2 Nov 2009 22:50:39 +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: r198830 -
	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: Mon, 02 Nov 2009 22:50:39 -0000

Author: kmacy
Date: Mon Nov  2 22:50:39 2009
New Revision: 198830
URL: http://svn.freebsd.org/changeset/base/198830

Log:
  add separate function for evicting blocks from the page cache

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  2 22:33:04 2009	(r198829)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Mon Nov  2 22:50:39 2009	(r198830)
@@ -491,8 +491,9 @@ 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);
 
-#define	GHOST_STATE(state)	\
+#define	GHOST_STATE(state)						\
 	((state) == arc_mru_ghost || (state) == arc_mfu_ghost ||	\
 	(state) == arc_l2c_only)
 
@@ -1307,31 +1308,21 @@ arc_getblk(arc_buf_t *buf)
 		ASSERT(type == ARC_BUFC_DATA);
 		flags = GB_NODUMP;
 		atomic_add_64(&arc_size, size);
-	}	
+	}
 
-	if (buf->b_hdr->b_flags & ARC_BUF_CLONING) {
+	if ((size < PAGE_SIZE) ||
+	    (buf->b_hdr->b_flags & ARC_BUF_CLONING) ||
+	    BUF_EMPTY(buf->b_hdr)) 
 		newbp = geteblk(size, flags);
-		tbuf = buf;
+	else 
+		newbp = getblk(spa_get_vnode(spa), blkno,
+		    size, 0, 0, flags);	
+
+	if (buf->b_hdr->b_flags & ARC_BUF_CLONING) {
 		vp = spa_get_vnode(spa);
 
-		bp = buf->b_bp;
-		bcopy(bp->b_data, newbp->b_data, size);
-		KASSERT((bp->b_blkno == bp->b_lblkno) &&
-		    (bp->b_blkno == blkno),
-		    ("blkno mismatch b_blkno %ld b_lblkno %ld blkno %ld",
-			bp->b_blkno, bp->b_lblkno, blkno));
-		while (tbuf->b_next != NULL) {
-			if (tbuf->b_bp->b_vp != NULL) {
-				KASSERT((bp->b_xflags & (BX_VNCLEAN|BX_VNDIRTY)) == BX_VNCLEAN, ("brelvp() on buffer that is not in splay"));
-
-				bp = tbuf->b_bp;
-				bp->b_flags |= B_INVAL;
-				bp->b_flags &= ~B_CACHE;
-				brelvp(bp);
-				break;
-			}
-			tbuf = tbuf->b_next;
-		}
+		arc_binval(buf, blkno, vp, size);
+		bcopy(buf->b_next->b_data, newbp->b_data, size);
 
 		newbp->b_bufobj = &vp->v_bufobj;
 		newbp->b_lblkno = blkno;
@@ -1343,15 +1334,16 @@ arc_getblk(arc_buf_t *buf)
 		BO_UNLOCK(&vp->v_bufobj);
 		newbp->b_flags &= ~B_INVAL;
 		newbp->b_flags |= B_CACHE;
-		buf->b_hdr->b_flags &= ~ARC_BUF_CLONING;
-		
-	} else if (BUF_EMPTY(buf->b_hdr)) {
-		newbp = geteblk(size, flags);
-	} else
-		newbp = getblk(spa_get_vnode(spa), blkno,
-		    size, 0, 0, flags);
+		buf->b_hdr->b_flags &= ~ARC_BUF_CLONING;		
+	} 
+#ifdef LOGALL
+	/*
+	 * not useful for tracking down collisions
+	 *
+	 */
 	CTR2(KTR_SPARE2, "arc_getblk() bp=%p flags %X",
 	    newbp, newbp->b_flags);
+#endif
 
 	BUF_KERNPROC(newbp);
 	buf->b_bp = newbp;
@@ -1367,15 +1359,46 @@ arc_brelse(arc_buf_t *buf, void *data, s
 #ifdef INVARIANTS
 	if (bp->b_vp) {
 		KASSERT((buf->b_bp->b_xflags & (BX_VNCLEAN|BX_VNDIRTY)) == BX_VNCLEAN, ("brelse() on buffer that is not clean"));
-		brelvp(bp);
 	}
 #endif	
 	
-	CTR5(KTR_SPARE2, "arc_brelse() bp=%p flags %X size %ld lblkno=%ld blkno=%ld",
-	    bp, bp->b_flags, size, bp->b_lblkno, bp->b_blkno);
+	CTR4(KTR_SPARE2, "arc_brelse() bp=%p flags %X size %ld blkno=%ld",
+	    bp, bp->b_flags, size, bp->b_blkno);
 	brelse(bp);
 }
 
+static void
+arc_binval(arc_buf_t *buf, off_t blkno, struct vnode *vp, size_t size) 
+{
+	arc_buf_hdr_t *hdr;
+	arc_buf_t *tbuf;
+	int released = 0;
+	struct buf *bp = NULL;	
+
+	/*
+	 * disassociate backing buffers from the vnode
+	 *
+	 */
+	for (tbuf = buf; tbuf != NULL; 	tbuf = tbuf->b_next) {
+		if ((tbuf->b_bp != NULL) && (tbuf->b_bp->b_vp != NULL)) {
+			bp = tbuf->b_bp;
+			KASSERT((bp->b_xflags & (BX_VNCLEAN|BX_VNDIRTY)) == BX_VNCLEAN, ("brelvp() on buffer that is not in splay"));
+			
+			bp->b_flags |= B_INVAL;
+			bp->b_flags &= ~B_CACHE;
+			brelvp(bp);
+			released = 1;	
+		}
+	}
+
+	if (!released)
+		if ((bp = getblk(vp, blkno, size, 0, 0, GB_NOCREAT)) != NULL) {		
+			bp->b_flags |= B_INVAL;
+			brelse(bp);
+		}
+}
+
+
 /*
  * Free the arc data buffer.  If it is an l2arc write in progress,
  * the buffer is placed on l2arc_free_on_write to be freed later.
@@ -3335,8 +3358,8 @@ arc_write_done(zio_t *zio)
 		struct vnode *vp = spa_get_vnode(hdr->b_spa);
 		off_t blkno = hdr->b_dva.dva_word[1] & ~(1UL<<63);	
 
-		CTR2(KTR_SPARE2, "arc_write_done(%p) flags %X",
-		    bp, bp->b_flags);
+		CTR3(KTR_SPARE2, "arc_write_done() bp=%p flags %X blkno %ld",
+		    bp, bp->b_flags, blkno);
 
 		arc_cksum_verify(buf);
 
@@ -3360,15 +3383,11 @@ arc_write_done(zio_t *zio)
 			exists = buf_hash_insert(hdr, &hash_lock);
 			ASSERT3P(exists, ==, NULL);
 		} else if ((hdr->b_buf == buf) &&
-		    (bp->b_bufobj == NULL)) {
-			struct buf *oldbp;
+		    (bp->b_bufobj == NULL) &&
+		    (bp->b_bcount >= PAGE_SIZE)) {
 			struct bufobj *bo;
 
-			oldbp = getblk(vp, blkno, bp->b_bcount, 0, 0, GB_NOCREAT);
-			if (oldbp != NULL) {
-				oldbp->b_flags |= B_INVAL;
-				brelse(oldbp);
-			}
+			arc_binval(buf, blkno, vp, bp->b_bcount);
 			bo = bp->b_bufobj = &vp->v_bufobj;
 			bp->b_lblkno = blkno;
 			bp->b_blkno = blkno;
@@ -3691,6 +3710,10 @@ arc_shutdown(void *arg __unused, int how
 	struct mount *mp, *tmpmp;
 	int error;
 
+	/*
+	 * unmount all ZFS file systems - freeing any buffers
+	 * then free all space allocator resources
+	 */
 	TAILQ_FOREACH_SAFE(mp, &mountlist, mnt_list, tmpmp) {
 		if (strcmp(mp->mnt_vfc->vfc_name, "zfs") == 0) {
 			error = dounmount(mp, MNT_FORCE, curthread);
@@ -3708,7 +3731,10 @@ arc_shutdown(void *arg __unused, int how
 	}
 	arc_flush(NULL);
 
-#if 0	
+#ifdef NOTYET
+	/*
+	 * need corresponding includes
+	 */
 	zfsdev_fini();
 	zvol_fini();
 	zfs_fini();

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 00:53:06 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 6977E1065679;
	Tue,  3 Nov 2009 00:53:06 +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 57F448FC13;
	Tue,  3 Nov 2009 00:53:06 +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 nA30r6DR074978;
	Tue, 3 Nov 2009 00:53:06 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA30r6Uw074975;
	Tue, 3 Nov 2009 00:53:06 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030053.nA30r6Uw074975@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 00:53:06 +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: r198834 -
	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, 03 Nov 2009 00:53:06 -0000

Author: kmacy
Date: Tue Nov  3 00:53:06 2009
New Revision: 198834
URL: http://svn.freebsd.org/changeset/base/198834

Log:
  - consolidate bgetvp in to arc_binval
  - handle case of duplicate mapping

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  2 23:50:12 2009	(r198833)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov  3 00:53:06 2009	(r198834)
@@ -1197,7 +1197,8 @@ arc_data_buf_free(void *buf, uint64_t si
 }
 
 static arc_buf_t *
-_arc_buf_alloc(spa_t *spa, int size, void *tag, arc_buf_contents_t type, dva_t dva)
+_arc_buf_alloc(spa_t *spa, int size, void *tag, arc_buf_contents_t type,
+	blkptr_t *bp)
 {
 	arc_buf_hdr_t *hdr;
 	arc_buf_t *buf;
@@ -1207,7 +1208,14 @@ _arc_buf_alloc(spa_t *spa, int size, voi
 	ASSERT(BUF_EMPTY(hdr));
 	hdr->b_size = size;
 	hdr->b_type = type;
-	hdr->b_dva = dva;
+	if (bp != NULL) {
+		hdr->b_dva = *BP_IDENTITY(bp);
+		hdr->b_birth = bp->blk_birth;
+	} else {
+		hdr->b_dva.dva_word[0] = 0;
+		hdr->b_dva.dva_word[1] = 0;
+		hdr->b_birth = 0;
+	}
 	hdr->b_spa = spa;
 	hdr->b_state = arc_anon;
 	hdr->b_arc_access = 0;
@@ -1230,9 +1238,8 @@ _arc_buf_alloc(spa_t *spa, int size, voi
 arc_buf_t *
 arc_buf_alloc(spa_t *spa, int size, void *tag, arc_buf_contents_t type)
 {
-	dva_t dva = {0ULL, 0ULL};
 
-	return (_arc_buf_alloc(spa, size, tag, type, dva));
+	return (_arc_buf_alloc(spa, size, tag, type, NULL));
 }
 
 static arc_buf_t *
@@ -1321,19 +1328,8 @@ arc_getblk(arc_buf_t *buf)
 	if (buf->b_hdr->b_flags & ARC_BUF_CLONING) {
 		vp = spa_get_vnode(spa);
 
-		arc_binval(buf, blkno, vp, size);
+		arc_binval(buf, blkno, vp, size, newbp);
 		bcopy(buf->b_next->b_data, newbp->b_data, size);
-
-		newbp->b_bufobj = &vp->v_bufobj;
-		newbp->b_lblkno = blkno;
-		newbp->b_blkno = blkno;
-		newbp->b_offset = (blkno<<9);	
-
-		BO_LOCK(&vp->v_bufobj);
-		bgetvp(vp, newbp);
-		BO_UNLOCK(&vp->v_bufobj);
-		newbp->b_flags &= ~B_INVAL;
-		newbp->b_flags |= B_CACHE;
 		buf->b_hdr->b_flags &= ~ARC_BUF_CLONING;		
 	} 
 #ifdef LOGALL
@@ -1368,13 +1364,14 @@ arc_brelse(arc_buf_t *buf, void *data, s
 }
 
 static void
-arc_binval(arc_buf_t *buf, off_t blkno, struct vnode *vp, size_t size) 
+arc_binval(arc_buf_t *buf, off_t blkno, struct vnode *vp, size_t size, struct buf *newbp) 
 {
 	arc_buf_hdr_t *hdr;
 	arc_buf_t *tbuf;
-	int released = 0;
+	int released = 0, gotvp = 0;
 	struct buf *bp = NULL;	
-
+	uint64_t birth;
+	
 	/*
 	 * disassociate backing buffers from the vnode
 	 *
@@ -1390,15 +1387,37 @@ arc_binval(arc_buf_t *buf, off_t blkno, 
 			released = 1;	
 		}
 	}
-
-	if (!released)
-		if ((bp = getblk(vp, blkno, size, 0, 0, GB_NOCREAT)) != NULL) {		
-			bp->b_flags |= B_INVAL;
-			brelse(bp);
-		}
+	newbp->b_bufobj = &vp->v_bufobj;
+	newbp->b_lblkno = blkno;
+	newbp->b_blkno = blkno;
+	newbp->b_offset = hdr->b_birth;
+	newbp->b_flags &= ~B_INVAL;
+	newbp->b_flags |= B_CACHE;
+
+	BO_LOCK(bo);
+	if (!released) {
+		bp = gbincore(bo, blkno);
+		if (bp != NULL) {
+			if (BUF_ISLOCKED(bp)) {
+				newbp->b_xflags |= BX_BKGRDMARKER;
+				bp->b_vflags |= BV_BKGRDINPROG;
+				bgetvp(vp, newbp);
+				gotvp = 1;
+			} else {
+				BUF_LOCK(bp, LK_EXCLUSIVE | LK_INTERLOCK, BO_MTX(bo));
+				bp->b_flags |= B_INVAL;
+				bp->b_flags &= ~B_CACHE;
+				BO_UNLOCK(bo);
+				brelse(bp);
+				BO_LOCK(bo);
+			}
+		} 
+	}
+	if (!gotvp)
+		bgetvp(vp, newbp);
+	BO_UNLOCK(&vp->v_bufobj);
 }
 
-
 /*
  * Free the arc data buffer.  If it is an l2arc write in progress,
  * the buffer is placed on l2arc_free_on_write to be freed later.
@@ -2772,11 +2791,9 @@ arc_read_nolock(zio_t *pio, spa_t *spa, 
 top:
 	hdr = buf_hash_find(spa, BP_IDENTITY(bp), bp->blk_birth, &hash_lock);
 	if (hdr && hdr->b_datacnt > 0) {
-
 		*arc_flags |= ARC_CACHED;
 
 		if (HDR_IO_IN_PROGRESS(hdr)) {
-
 			if (*arc_flags & ARC_WAIT) {
 				cv_wait(&hdr->b_cv, hash_lock);
 				mutex_exit(hash_lock);
@@ -2850,10 +2867,10 @@ top:
 			/* this block is not in the cache */
 			arc_buf_hdr_t	*exists;
 			arc_buf_contents_t type = BP_GET_BUFC_TYPE(bp);
+
 			buf = _arc_buf_alloc(spa, size, private, type,
-			    *BP_IDENTITY(bp));
+			    bp);
 			hdr = buf->b_hdr;
-			hdr->b_birth = bp->blk_birth;
 			hdr->b_cksum0 = bp->blk_cksum.zc_word[0];
 			exists = buf_hash_insert(hdr, &hash_lock);
 			if (exists) {
@@ -2912,7 +2929,8 @@ top:
 			ARCSTAT_BUMP(arcstat_page_cache_hits);
 			mutex_exit(hash_lock);
 			goto top;
-		}
+		} else
+			buf->b_bp->b_offset = bp->blk_birth;
 
 		acb = kmem_zalloc(sizeof (arc_callback_t), KM_SLEEP);
 		acb->acb_done = done;
@@ -3385,18 +3403,7 @@ arc_write_done(zio_t *zio)
 		} else if ((hdr->b_buf == buf) &&
 		    (bp->b_bufobj == NULL) &&
 		    (bp->b_bcount >= PAGE_SIZE)) {
-			struct bufobj *bo;
-
-			arc_binval(buf, blkno, vp, bp->b_bcount);
-			bo = bp->b_bufobj = &vp->v_bufobj;
-			bp->b_lblkno = blkno;
-			bp->b_blkno = blkno;
-			bp->b_offset = (blkno << 9);
-			BO_LOCK(bo);
-			bgetvp(vp, bp);
-			BO_UNLOCK(bo);
-			bp->b_flags &= ~B_INVAL;
-			bp->b_flags |= B_CACHE;
+			arc_binval(buf, blkno, vp, bp->b_bcount, bp);
 		}
 
 		hdr->b_flags &= ~ARC_IO_IN_PROGRESS;

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 01:03:58 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 AF4151065670;
	Tue,  3 Nov 2009 01:03:58 +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 9E7258FC0A;
	Tue,  3 Nov 2009 01:03:58 +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 nA313wBj075271;
	Tue, 3 Nov 2009 01:03:58 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA313wPg075269;
	Tue, 3 Nov 2009 01:03:58 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030103.nA313wPg075269@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 01:03:58 +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: r198835 -
	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, 03 Nov 2009 01:03:58 -0000

Author: kmacy
Date: Tue Nov  3 01:03:58 2009
New Revision: 198835
URL: http://svn.freebsd.org/changeset/base/198835

Log:
  fix compile errors

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  3 00:53:06 2009	(r198834)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov  3 01:03:58 2009	(r198835)
@@ -491,7 +491,8 @@ 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);
+static void arc_binval(arc_buf_t *buf, off_t blkno, struct vnode *vp,
+    size_t size, struct buf *bp);
 
 #define	GHOST_STATE(state)						\
 	((state) == arc_mru_ghost || (state) == arc_mfu_ghost ||	\
@@ -1328,8 +1329,8 @@ arc_getblk(arc_buf_t *buf)
 	if (buf->b_hdr->b_flags & ARC_BUF_CLONING) {
 		vp = spa_get_vnode(spa);
 
-		arc_binval(buf, blkno, vp, size, newbp);
 		bcopy(buf->b_next->b_data, newbp->b_data, size);
+		arc_binval(buf, blkno, vp, size, newbp);
 		buf->b_hdr->b_flags &= ~ARC_BUF_CLONING;		
 	} 
 #ifdef LOGALL
@@ -1371,7 +1372,8 @@ arc_binval(arc_buf_t *buf, off_t blkno, 
 	int released = 0, gotvp = 0;
 	struct buf *bp = NULL;	
 	uint64_t birth;
-	
+	struct bufobj *bo;
+
 	/*
 	 * disassociate backing buffers from the vnode
 	 *
@@ -1387,7 +1389,7 @@ arc_binval(arc_buf_t *buf, off_t blkno, 
 			released = 1;	
 		}
 	}
-	newbp->b_bufobj = &vp->v_bufobj;
+	bo = newbp->b_bufobj = &vp->v_bufobj;
 	newbp->b_lblkno = blkno;
 	newbp->b_blkno = blkno;
 	newbp->b_offset = hdr->b_birth;

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 01:09:24 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 62098106566C;
	Tue,  3 Nov 2009 01:09:24 +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 50E0A8FC0C;
	Tue,  3 Nov 2009 01:09:24 +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 nA319O5d075407;
	Tue, 3 Nov 2009 01:09:24 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA319N8R075405;
	Tue, 3 Nov 2009 01:09:23 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030109.nA319N8R075405@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 01:09:23 +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: r198836 -
	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, 03 Nov 2009 01:09:24 -0000

Author: kmacy
Date: Tue Nov  3 01:09:23 2009
New Revision: 198836
URL: http://svn.freebsd.org/changeset/base/198836

Log:
  eliminate uninitialized variable

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  3 01:03:58 2009	(r198835)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov  3 01:09:23 2009	(r198836)
@@ -1367,7 +1367,6 @@ arc_brelse(arc_buf_t *buf, void *data, s
 static void
 arc_binval(arc_buf_t *buf, off_t blkno, struct vnode *vp, size_t size, struct buf *newbp) 
 {
-	arc_buf_hdr_t *hdr;
 	arc_buf_t *tbuf;
 	int released = 0, gotvp = 0;
 	struct buf *bp = NULL;	
@@ -1392,7 +1391,7 @@ arc_binval(arc_buf_t *buf, off_t blkno, 
 	bo = newbp->b_bufobj = &vp->v_bufobj;
 	newbp->b_lblkno = blkno;
 	newbp->b_blkno = blkno;
-	newbp->b_offset = hdr->b_birth;
+	newbp->b_offset = buf->b_hdr->b_birth;
 	newbp->b_flags &= ~B_INVAL;
 	newbp->b_flags |= B_CACHE;
 
@@ -1417,7 +1416,7 @@ arc_binval(arc_buf_t *buf, off_t blkno, 
 	}
 	if (!gotvp)
 		bgetvp(vp, newbp);
-	BO_UNLOCK(&vp->v_bufobj);
+	BO_UNLOCK(bo);
 }
 
 /*

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 01:49:06 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 CD517106566B;
	Tue,  3 Nov 2009 01:49:06 +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 BC6CD8FC1F;
	Tue,  3 Nov 2009 01:49:06 +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 nA31n6QK076227;
	Tue, 3 Nov 2009 01:49:06 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA31n6MD076225;
	Tue, 3 Nov 2009 01:49:06 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030149.nA31n6MD076225@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 01:49:06 +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: r198837 -
	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, 03 Nov 2009 01:49:06 -0000

Author: kmacy
Date: Tue Nov  3 01:49:06 2009
New Revision: 198837
URL: http://svn.freebsd.org/changeset/base/198837

Log:
  remove unneeded unlock

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  3 01:09:23 2009	(r198836)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov  3 01:49:06 2009	(r198837)
@@ -1408,7 +1408,6 @@ arc_binval(arc_buf_t *buf, off_t blkno, 
 				BUF_LOCK(bp, LK_EXCLUSIVE | LK_INTERLOCK, BO_MTX(bo));
 				bp->b_flags |= B_INVAL;
 				bp->b_flags &= ~B_CACHE;
-				BO_UNLOCK(bo);
 				brelse(bp);
 				BO_LOCK(bo);
 			}

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 03:20:13 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 ECAE8106566C;
	Tue,  3 Nov 2009 03:20:13 +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 C21E18FC0A;
	Tue,  3 Nov 2009 03:20:13 +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 nA33KDaO078453;
	Tue, 3 Nov 2009 03:20:13 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA33KDRl078451;
	Tue, 3 Nov 2009 03:20:13 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030320.nA33KDRl078451@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 03:20:13 +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: r198838 -
	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, 03 Nov 2009 03:20:14 -0000

Author: kmacy
Date: Tue Nov  3 03:20:13 2009
New Revision: 198838
URL: http://svn.freebsd.org/changeset/base/198838

Log:
  handle buf allocation in case where blkno is already cached for a previous birth transaction

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  3 01:49:06 2009	(r198837)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov  3 03:20:13 2009	(r198838)
@@ -1308,6 +1308,7 @@ arc_getblk(arc_buf_t *buf)
 	struct buf *newbp, *bp;
 	arc_buf_t *tbuf;
 	struct vnode *vp;
+	struct bufobj *bo;
 	int flags = 0;
 
 	if (type == ARC_BUFC_METADATA) {
@@ -1318,21 +1319,52 @@ arc_getblk(arc_buf_t *buf)
 		atomic_add_64(&arc_size, size);
 	}
 
+	vp = spa_get_vnode(spa);
+	bo = &vp->v_bufobj;
 	if ((size < PAGE_SIZE) ||
 	    (buf->b_hdr->b_flags & ARC_BUF_CLONING) ||
-	    BUF_EMPTY(buf->b_hdr)) 
+	    BUF_EMPTY(buf->b_hdr)) {
+		
 		newbp = geteblk(size, flags);
-	else 
-		newbp = getblk(spa_get_vnode(spa), blkno,
-		    size, 0, 0, flags);	
+	} else {
+		/*
+		 * We need to be careful to handle the case where the buffer
+		 * is already held in the ARC for a previous birth transaction
+		 */
+		BO_LOCK(bo);
+		bp = gbincore(bo, blkno);
+		if (bp != NULL) {
+			if (BUF_ISLOCKED(bp)) {
+				BO_UNLOCK(bo);
+				newbp = geteblk(size, flags);
+				arc_binval(buf, blkno, vp, size, newbp);
+			} else {
+				BUF_LOCK(bp, LK_EXCLUSIVE | LK_INTERLOCK, BO_MTX(bo));
+				if (bp->b_flags & B_INVAL)
+					bp->b_flags &= ~B_CACHE;
+				else if ((bp->b_flags & (B_VMIO | B_INVAL)) == 0)
+					bp->b_flags |= B_CACHE;
+				bremfree(bp);
+				if (bp->b_bcount != size) {
+					bp->b_flags |= B_INVAL;
+					bp->b_flags &= ~B_CACHE;
+					brelse(bp);
+					newbp = getblk(vp, blkno, size, 0, 0, flags);
+				} else
+					newbp = bp;
+			}
+			
+		}
+	}
 
-	if (buf->b_hdr->b_flags & ARC_BUF_CLONING) {
+	if ((size >= PAGE_SIZE) && (buf->b_hdr->b_flags & ARC_BUF_CLONING)) {
 		vp = spa_get_vnode(spa);
 
 		bcopy(buf->b_next->b_data, newbp->b_data, size);
 		arc_binval(buf, blkno, vp, size, newbp);
 		buf->b_hdr->b_flags &= ~ARC_BUF_CLONING;		
 	} 
+	
 #ifdef LOGALL
 	/*
 	 * not useful for tracking down collisions
@@ -1408,6 +1440,7 @@ arc_binval(arc_buf_t *buf, off_t blkno, 
 				BUF_LOCK(bp, LK_EXCLUSIVE | LK_INTERLOCK, BO_MTX(bo));
 				bp->b_flags |= B_INVAL;
 				bp->b_flags &= ~B_CACHE;
+				bremfree(bp);
 				brelse(bp);
 				BO_LOCK(bo);
 			}

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 03:29: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 9FFE9106566B;
	Tue,  3 Nov 2009 03:29: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 8F04A8FC12;
	Tue,  3 Nov 2009 03:29: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 nA33TvS1078666;
	Tue, 3 Nov 2009 03:29:57 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA33TvUM078664;
	Tue, 3 Nov 2009 03:29:57 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030329.nA33TvUM078664@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 03:29: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: r198839 -
	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, 03 Nov 2009 03:29:57 -0000

Author: kmacy
Date: Tue Nov  3 03:29:57 2009
New Revision: 198839
URL: http://svn.freebsd.org/changeset/base/198839

Log:
  allocate buf if it doesn't already exist

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  3 03:20:13 2009	(r198838)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov  3 03:29:57 2009	(r198839)
@@ -1354,7 +1354,11 @@ arc_getblk(arc_buf_t *buf)
 					newbp = bp;
 			}
 			
+		} else {
+			BO_UNLOCK(bo);
+			newbp = getblk(vp, blkno, size, 0, 0, flags);
 		}
+		newbp->b_offset = buf->b_hdr->b_birth;
 	}
 
 	if ((size >= PAGE_SIZE) && (buf->b_hdr->b_flags & ARC_BUF_CLONING)) {

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 05:52:44 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 888C41065670;
	Tue,  3 Nov 2009 05:52:44 +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 5DDE08FC12;
	Tue,  3 Nov 2009 05:52:44 +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 nA35qipK081375;
	Tue, 3 Nov 2009 05:52:44 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA35qi2J081372;
	Tue, 3 Nov 2009 05:52:44 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030552.nA35qi2J081372@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 05:52:44 +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: r198840 - in user/kmacy/releng_8_fcs_buf/sys: kern sys
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, 03 Nov 2009 05:52:44 -0000

Author: kmacy
Date: Tue Nov  3 05:52:44 2009
New Revision: 198840
URL: http://svn.freebsd.org/changeset/base/198840

Log:
  make _allocbuf visible as allocbuf_flags

Modified:
  user/kmacy/releng_8_fcs_buf/sys/kern/vfs_bio.c
  user/kmacy/releng_8_fcs_buf/sys/sys/buf.h

Modified: user/kmacy/releng_8_fcs_buf/sys/kern/vfs_bio.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/kern/vfs_bio.c	Tue Nov  3 03:29:57 2009	(r198839)
+++ user/kmacy/releng_8_fcs_buf/sys/kern/vfs_bio.c	Tue Nov  3 05:52:44 2009	(r198840)
@@ -94,7 +94,6 @@ struct buf *buf;		/* buffer header pool 
 
 static struct proc *bufdaemonproc;
 
-static int _allocbuf(struct buf *bp, int size, int flags);
 static int inmem(struct vnode *vp, daddr_t blkno);
 static void vm_hold_free_pages(struct buf *bp, vm_offset_t from,
 		vm_offset_t to);
@@ -2625,7 +2624,7 @@ loop:
 		 */
 
 		if (bp->b_bcount != size)
-			_allocbuf(bp, size, flags);
+			allocbuf_flags(bp, size, flags);
 
 		KASSERT(bp->b_offset != NOOFFSET, 
 		    ("getblk: no buffer offset"));
@@ -2745,7 +2744,7 @@ loop:
 			    bp, bp->b_bufobj->bo_object));
 		}
 
-		_allocbuf(bp, size, flags);
+		allocbuf_flags(bp, size, flags);
 		bp->b_flags &= ~B_DONE;
 	}
 	CTR4(KTR_BUF, "getblk(%p, %ld, %d) = %p", vp, (long)blkno, size, bp);
@@ -2771,7 +2770,7 @@ geteblk(int size, int flags)
 		    (curthread->td_pflags & TDP_BUFNEED) != 0)
 			return (NULL);
 	}
-	_allocbuf(bp, size, flags);
+	allocbuf_flags(bp, size, flags);
 	bp->b_flags |= B_INVAL;	/* b_dep cleared by getnewbuf() */
 	BUF_ASSERT_HELD(bp);
 	return (bp);
@@ -2793,8 +2792,8 @@ geteblk(int size, int flags)
  * B_CACHE for the non-VMIO case.
  */
 
-static int
-_allocbuf(struct buf *bp, int size, int flags)
+int
+allocbuf_flags(struct buf *bp, int size, int flags)
 {
 	int newbsize, mbsize;
 	int i;
@@ -3089,7 +3088,7 @@ int
 allocbuf(struct buf *bp, int size)
 {
 
-	return (_allocbuf(bp, size, 0));
+	return (allocbuf_flags(bp, size, 0));
 }
 
 void

Modified: user/kmacy/releng_8_fcs_buf/sys/sys/buf.h
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/sys/buf.h	Tue Nov  3 03:29:57 2009	(r198839)
+++ user/kmacy/releng_8_fcs_buf/sys/sys/buf.h	Tue Nov  3 05:52:44 2009	(r198840)
@@ -513,6 +513,7 @@ void	pbgetvp(struct vnode *, struct buf 
 void	pbrelbo(struct buf *);
 void	pbrelvp(struct buf *);
 int	allocbuf(struct buf *bp, int size);
+int	allocbuf_flags(struct buf *bp, int size, int flags);
 void	reassignbuf(struct buf *);
 struct	buf *trypbuf(int *);
 void	bwait(struct buf *, u_char, const char *);

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 05:53:48 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 66FF3106566B;
	Tue,  3 Nov 2009 05:53:48 +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 565F98FC1E;
	Tue,  3 Nov 2009 05:53:48 +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 nA35rmEq081428;
	Tue, 3 Nov 2009 05:53:48 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA35rm60081426;
	Tue, 3 Nov 2009 05:53:48 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030553.nA35rm60081426@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 05:53:48 +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: r198841 -
	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, 03 Nov 2009 05:53:48 -0000

Author: kmacy
Date: Tue Nov  3 05:53:48 2009
New Revision: 198841
URL: http://svn.freebsd.org/changeset/base/198841

Log:
  call allocbuf on size mismatch

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  3 05:52:44 2009	(r198840)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov  3 05:53:48 2009	(r198841)
@@ -1345,13 +1345,9 @@ arc_getblk(arc_buf_t *buf)
 				else if ((bp->b_flags & (B_VMIO | B_INVAL)) == 0)
 					bp->b_flags |= B_CACHE;
 				bremfree(bp);
-				if (bp->b_bcount != size) {
-					bp->b_flags |= B_INVAL;
-					bp->b_flags &= ~B_CACHE;
-					brelse(bp);
-					newbp = getblk(vp, blkno, size, 0, 0, flags);
-				} else
-					newbp = bp;
+				if (bp->b_bcount != size)
+					allocbuf_flags(bp, size, flags);
+				newbp = bp;
 			}
 			
 		} else {

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 07:19:56 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 AE8AE106566C;
	Tue,  3 Nov 2009 07:19:56 +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 9DE938FC1B;
	Tue,  3 Nov 2009 07:19:56 +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 nA37JuVU083035;
	Tue, 3 Nov 2009 07:19:56 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA37JuRm083033;
	Tue, 3 Nov 2009 07:19:56 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030719.nA37JuRm083033@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 07:19:56 +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: r198843 -
	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, 03 Nov 2009 07:19:56 -0000

Author: kmacy
Date: Tue Nov  3 07:19:56 2009
New Revision: 198843
URL: http://svn.freebsd.org/changeset/base/198843

Log:
  avoid divide by zero by clamping to 1

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  3 06:42:55 2009	(r198842)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov  3 07:19:56 2009	(r198843)
@@ -2327,7 +2327,7 @@ arc_reclaim_thread(void *dummy __unused)
 static void
 arc_adapt(int bytes, arc_state_t *state)
 {
-	int mult;
+	int mult, divisor;
 
 	if (state == arc_l2c_only)
 		return;
@@ -2342,13 +2342,15 @@ arc_adapt(int bytes, arc_state_t *state)
 	 *	  target size of the MRU list.
 	 */
 	if (state == arc_mru_ghost) {
+		divisor = MAX(arc_mru_ghost->arcs_size, 1);
 		mult = ((arc_mru_ghost->arcs_size >= arc_mfu_ghost->arcs_size) ?
 		    1 : (arc_mfu_ghost->arcs_size/arc_mru_ghost->arcs_size));
 
 		arc_p = MIN(arc_c, arc_p + bytes * mult);
 	} else if (state == arc_mfu_ghost) {
+		divisor = MAX(arc_mfu_ghost->arcs_size, 1);		
 		mult = ((arc_mfu_ghost->arcs_size >= arc_mru_ghost->arcs_size) ?
-		    1 : (arc_mru_ghost->arcs_size/arc_mfu_ghost->arcs_size));
+		    1 : (arc_mru_ghost->arcs_size/divisor));
 
 		arc_p = MAX(0, (int64_t)arc_p - bytes * mult);
 	}

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 07:29:59 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 3CE25106566C;
	Tue,  3 Nov 2009 07:29:59 +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 2D2CC8FC13;
	Tue,  3 Nov 2009 07:29:59 +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 nA37Tx5h083237;
	Tue, 3 Nov 2009 07:29:59 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA37Txtt083235;
	Tue, 3 Nov 2009 07:29:59 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911030729.nA37Txtt083235@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 07:29:59 +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: r198844 - user/kmacy/releng_8_fcs_buf/sys/kern
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, 03 Nov 2009 07:29:59 -0000

Author: kmacy
Date: Tue Nov  3 07:29:58 2009
New Revision: 198844
URL: http://svn.freebsd.org/changeset/base/198844

Log:
  bump FULLGRAPH_SBUF_SIZE to avoid gratuitous panics when using WITNESS

Modified:
  user/kmacy/releng_8_fcs_buf/sys/kern/subr_witness.c

Modified: user/kmacy/releng_8_fcs_buf/sys/kern/subr_witness.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/kern/subr_witness.c	Tue Nov  3 07:19:56 2009	(r198843)
+++ user/kmacy/releng_8_fcs_buf/sys/kern/subr_witness.c	Tue Nov  3 07:29:58 2009	(r198844)
@@ -155,7 +155,7 @@ __FBSDID("$FreeBSD$");
 
 #define	BADSTACK_SBUF_SIZE	(256 * WITNESS_COUNT)
 #define	CYCLEGRAPH_SBUF_SIZE	8192
-#define	FULLGRAPH_SBUF_SIZE	32768
+#define	FULLGRAPH_SBUF_SIZE	131072
 
 /*
  * These flags go in the witness relationship matrix and describe the

From owner-svn-src-user@FreeBSD.ORG  Tue Nov  3 21:24:38 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 9C86A1065672;
	Tue,  3 Nov 2009 21:24:38 +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 71B0B8FC13;
	Tue,  3 Nov 2009 21:24:38 +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 nA3LOcDR005509;
	Tue, 3 Nov 2009 21:24:38 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA3LOcni005507;
	Tue, 3 Nov 2009 21:24:38 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911032124.nA3LOcni005507@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Tue, 3 Nov 2009 21:24:38 +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: r198861 -
	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, 03 Nov 2009 21:24:38 -0000

Author: kmacy
Date: Tue Nov  3 21:24:37 2009
New Revision: 198861
URL: http://svn.freebsd.org/changeset/base/198861

Log:
  simplify page cache invalidation

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  3 21:06:19 2009	(r198860)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Tue Nov  3 21:24:37 2009	(r198861)
@@ -1321,6 +1321,8 @@ arc_getblk(arc_buf_t *buf)
 
 	vp = spa_get_vnode(spa);
 	bo = &vp->v_bufobj;
+	newbp = NULL;
+
 	if ((size < PAGE_SIZE) ||
 	    (buf->b_hdr->b_flags & ARC_BUF_CLONING) ||
 	    BUF_EMPTY(buf->b_hdr)) {
@@ -1336,8 +1338,7 @@ arc_getblk(arc_buf_t *buf)
 		if (bp != NULL) {
 			if (BUF_ISLOCKED(bp)) {
 				BO_UNLOCK(bo);
-				newbp = geteblk(size, flags);
-				arc_binval(buf, blkno, vp, size, newbp);
+				brelvp(bp);
 			} else {
 				BUF_LOCK(bp, LK_EXCLUSIVE | LK_INTERLOCK, BO_MTX(bo));
 				if (bp->b_flags & B_INVAL)
@@ -1350,10 +1351,12 @@ arc_getblk(arc_buf_t *buf)
 				newbp = bp;
 			}
 			
-		} else {
+		} else 
 			BO_UNLOCK(bo);
+
+		if (newbp == NULL)
 			newbp = getblk(vp, blkno, size, 0, 0, flags);
-		}
+
 		newbp->b_offset = buf->b_hdr->b_birth;
 	}
 
@@ -1400,7 +1403,7 @@ static void
 arc_binval(arc_buf_t *buf, off_t blkno, struct vnode *vp, size_t size, struct buf *newbp) 
 {
 	arc_buf_t *tbuf;
-	int released = 0, gotvp = 0;
+	int released = 0;
 	struct buf *bp = NULL;	
 	uint64_t birth;
 	struct bufobj *bo;
@@ -1432,22 +1435,19 @@ arc_binval(arc_buf_t *buf, off_t blkno, 
 		bp = gbincore(bo, blkno);
 		if (bp != NULL) {
 			if (BUF_ISLOCKED(bp)) {
-				newbp->b_xflags |= BX_BKGRDMARKER;
-				bp->b_vflags |= BV_BKGRDINPROG;
-				bgetvp(vp, newbp);
-				gotvp = 1;
+				BO_UNLOCK(bo);
+				brelvp(bp);
 			} else {
 				BUF_LOCK(bp, LK_EXCLUSIVE | LK_INTERLOCK, BO_MTX(bo));
 				bp->b_flags |= B_INVAL;
 				bp->b_flags &= ~B_CACHE;
 				bremfree(bp);
 				brelse(bp);
-				BO_LOCK(bo);
 			}
+			BO_LOCK(bo);
 		} 
 	}
-	if (!gotvp)
-		bgetvp(vp, newbp);
+	bgetvp(vp, newbp);
 	BO_UNLOCK(bo);
 }
 

From owner-svn-src-user@FreeBSD.ORG  Fri Nov  6 00:00:47 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 74763106568B;
	Fri,  6 Nov 2009 00:00:47 +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 63EAC8FC22;
	Fri,  6 Nov 2009 00:00:47 +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 nA600lNX095141;
	Fri, 6 Nov 2009 00:00:47 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA600lEw095139;
	Fri, 6 Nov 2009 00:00:47 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911060000.nA600lEw095139@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Fri, 6 Nov 2009 00:00:47 +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: r198965 -
	user/kmacy/releng_8_fcs/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: Fri, 06 Nov 2009 00:00:47 -0000

Author: kmacy
Date: Fri Nov  6 00:00:47 2009
New Revision: 198965
URL: http://svn.freebsd.org/changeset/base/198965

Log:
  fix arc_evict accounting bug

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

Modified: user/kmacy/releng_8_fcs/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
==============================================================================
--- user/kmacy/releng_8_fcs/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Thu Nov  5 22:58:50 2009	(r198964)
+++ user/kmacy/releng_8_fcs/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Fri Nov  6 00:00:47 2009	(r198965)
@@ -1528,13 +1528,12 @@ arc_evict(arc_state_t *state, spa_t *spa
 	boolean_t have_lock;
 	void *stolen = NULL;
 	static int evict_metadata_offset, evict_data_offset;
-	int idx, offset, list_count, count;
+	int i, idx, offset, list_count, count;
 
 	ASSERT(state == arc_mru || state == arc_mfu);
 
 	evicted_state = (state == arc_mru) ? arc_mru_ghost : arc_mfu_ghost;
 	
-	bytes_remaining = evicted_state->arcs_lsize[ab->b_type];
 	if (type == ARC_BUFC_METADATA) {
 		offset = 0;
 		list_count = ARC_BUFC_NUMMETADATALISTS;
@@ -1549,6 +1548,9 @@ arc_evict(arc_state_t *state, spa_t *spa
 		list_count = ARC_BUFC_NUMDATALISTS;
 		idx = evict_data_offset;
 	}
+	for (bytes_remaining = 0, i = 0; i < list_count; i++) 
+                bytes_remaining += evicted_state->arcs_lsize[i + offset]; 
+
 	count = 0;
 	
 evict_start:

From owner-svn-src-user@FreeBSD.ORG  Fri Nov  6 00:03:49 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 A0C4C1065672;
	Fri,  6 Nov 2009 00:03:49 +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 7615B8FC0A;
	Fri,  6 Nov 2009 00:03:49 +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 nA603nx3095245;
	Fri, 6 Nov 2009 00:03:49 GMT (envelope-from kmacy@svn.freebsd.org)
Received: (from kmacy@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA603n1V095242;
	Fri, 6 Nov 2009 00:03:49 GMT (envelope-from kmacy@svn.freebsd.org)
Message-Id: <200911060003.nA603n1V095242@svn.freebsd.org>
From: Kip Macy <kmacy@FreeBSD.org>
Date: Fri, 6 Nov 2009 00:03:49 +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: r198966 -
	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: Fri, 06 Nov 2009 00:03:49 -0000

Author: kmacy
Date: Fri Nov  6 00:03:48 2009
New Revision: 198966
URL: http://svn.freebsd.org/changeset/base/198966

Log:
  fix kmem_alloc flag usage and arc_evict accounting bug

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/zio.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	Fri Nov  6 00:00:47 2009	(r198965)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Fri Nov  6 00:03:48 2009	(r198966)
@@ -126,8 +126,8 @@
 #include <sys/vdev.h>
 #ifdef _KERNEL
 #include <sys/dnlc.h>
-#include <sys/ktr.h>
 #endif
+#include <sys/ktr.h>
 #include <sys/callb.h>
 #include <sys/kstat.h>
 #include <sys/sdt.h>
@@ -1708,14 +1708,13 @@ arc_evict(arc_state_t *state, spa_t *spa
 	boolean_t have_lock;
 	struct buf *stolen = NULL;
 	static int evict_metadata_offset, evict_data_offset;
-	int idx, offset, list_count, count;
+	int i, idx, offset, list_count, count;
 
 	ASSERT(state == arc_mru || state == arc_mfu);
 	ASSERT(recycle == FALSE);
 
 	evicted_state = (state == arc_mru) ? arc_mru_ghost : arc_mfu_ghost;
 	
-	bytes_remaining = evicted_state->arcs_lsize[ab->b_type];
 	if (type == ARC_BUFC_METADATA) {
 		offset = 0;
 		list_count = ARC_BUFC_NUMMETADATALISTS;
@@ -1730,6 +1729,9 @@ arc_evict(arc_state_t *state, spa_t *spa
 		list_count = ARC_BUFC_NUMDATALISTS;
 		idx = evict_data_offset;
 	}
+	for (bytes_remaining = 0, i = 0; i < list_count; i++) 
+                bytes_remaining += evicted_state->arcs_lsize[i + offset]; 
+
 	count = 0;
 	
 evict_start:

Modified: user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c	Fri Nov  6 00:00:47 2009	(r198965)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c	Fri Nov  6 00:03:48 2009	(r198966)
@@ -214,7 +214,7 @@ zio_data_buf_alloc(size_t size)
 
 	return (kmem_cache_alloc(zio_data_buf_cache[c], KM_PUSHPAGE));
 #else
-	return (kmem_alloc(size, KM_SLEEP|KM_NODEBUG));
+	return (kmem_alloc(size, KM_SLEEP));
 #endif
 }
 

From owner-svn-src-user@FreeBSD.ORG  Fri Nov  6 22:13:39 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 E8DB0106566B;
	Fri,  6 Nov 2009 22:13:39 +0000 (UTC)
	(envelope-from dougb@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id BF9E28FC08;
	Fri,  6 Nov 2009 22:13:39 +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 nA6MDdJK029922;
	Fri, 6 Nov 2009 22:13:39 GMT (envelope-from dougb@svn.freebsd.org)
Received: (from dougb@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id nA6MDdfm029920;
	Fri, 6 Nov 2009 22:13:39 GMT (envelope-from dougb@svn.freebsd.org)
Message-Id: <200911062213.nA6MDdfm029920@svn.freebsd.org>
From: Doug Barton <dougb@FreeBSD.org>
Date: Fri, 6 Nov 2009 22:13:39 +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: r199006 - user/dougb/portmaster
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: Fri, 06 Nov 2009 22:13:40 -0000

Author: dougb
Date: Fri Nov  6 22:13:39 2009
New Revision: 199006
URL: http://svn.freebsd.org/changeset/base/199006

Log:
  1. Enhance the command line parser to handle --options in any position
  on the command line, and pave the way for handling portupgrade-like
  syntax such as -P/-PP. This still contains some debugging output
  by design to aid continued testing.
  2. In usage() remove the note that --force-config has to be first
  
  Sponsored by:	http://dougbarton.us/portmaster-proposal.html
  Funded by:	Michael Proto
  Funded by:	Bard Skaflestad
  Funded by:	Paul Lambert
  Funded by:	Societe ToDoo
  Funded by:	Andrew Belashov
  Funded by:	Yoriyuki Sakai
  Funded by:	Flemming Jacobsen
  Funded by:	Julian Stecklina

Modified:
  user/dougb/portmaster/portmaster

Modified: user/dougb/portmaster/portmaster
==============================================================================
--- user/dougb/portmaster/portmaster	Fri Nov  6 21:53:38 2009	(r199005)
+++ user/dougb/portmaster/portmaster	Fri Nov  6 22:13:39 2009	(r199006)
@@ -261,7 +261,7 @@ usage () {
 	echo "${0##*/} -h|--help"
 	echo "${0##*/} --version"
 	echo ''
-	echo "--force-config 'make config' for all ports (must be first option)"
+	echo "--force-config 'make config' for all ports"
 	echo "-C prevents 'make clean' from being run before building"
 	echo "-G prevents recursive 'make config' (overrides --force-config)"
 	echo "-H hide details of the port build and install in a log file"
@@ -366,19 +366,30 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then
 	export pd pdb distdir
 fi
 
-case "$1" in
---help)			usage 0 ;;
---version)		version ; exit 0 ;;
---clean-distfiles)	CLEAN_DISTFILES=clean_distfiles ;;
---clean-distfiles-all)	CLEAN_DISTFILES=clean_distfiles_all ; ALL=cda ;;
---check-depends)	CHECK_DEPENDS=check_depends ;;
---check-port-dbdir)	CHECK_PORT_DBDIR=check_port_dbdir ;;
---list-origins)		LIST_ORIGINS=list_origins ;;
---show-work)		SHOW_WORK=show ; RECURSE_THOROUGH=thorough ; shift ;;
---force-config)		export FORCE_CONFIG=force_config ; shift ;;
---*)			echo "Illegal option $1" ; echo ''
-			echo "===>>> Try ${0##*/} --help"; exit 1 ;;
-esac
+echo '' ; echo "Debug> #: $# @: $@"
+
+for var in "$@" ; do
+	case "$var" in
+	-[A-Za-z0-9]*)          newopts="$newopts $var" ;;
+	--help)			usage 0 ;;
+	--version)		version ; exit 0 ;;
+	--clean-distfiles)	CLEAN_DISTFILES=clean_distfiles ;;
+	--clean-distfiles-all)	CLEAN_DISTFILES=clean_distfiles_all ; ALL=cda ;;
+	--check-depends)	CHECK_DEPENDS=check_depends ;;
+	--check-port-dbdir)	CHECK_PORT_DBDIR=check_port_dbdir ;;
+	--list-origins)		LIST_ORIGINS=list_origins ;;
+	--show-work)		SHOW_WORK=show ; RECURSE_THOROUGH=thorough ;;
+	--force-config)		export FORCE_CONFIG=force_config ;;
+	--*)			echo "Illegal option $var" ; echo ''
+				echo "===>>> Try ${0##*/} --help"; exit 1 ;;
+	*)                      newopts="$newopts $var" ;;
+	esac
+done
+
+set -- $newopts
+unset var newopts
+
+echo '' ; echo "Debug> #: $# @: $@"
 
 #=============== Begin functions relevant to --features and main ===============