From owner-svn-src-user@FreeBSD.ORG Sun Nov 1 01:42:45 2009 Return-Path: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 #include #include +#include #include #include @@ -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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 #ifdef _KERNEL #include -#include #endif +#include #include #include #include @@ -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: 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 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 " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 ===============