From owner-svn-src-projects@FreeBSD.ORG Sat Jan 29 00:33:04 2011 Return-Path: <owner-svn-src-projects@FreeBSD.ORG> Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EA961065670; Sat, 29 Jan 2011 00:33:04 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6E66E8FC16; Sat, 29 Jan 2011 00:33:04 +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 p0T0X4hv006642; Sat, 29 Jan 2011 00:33:04 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p0T0X48l006640; Sat, 29 Jan 2011 00:33:04 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201101290033.p0T0X48l006640@svn.freebsd.org> From: Warner Losh <imp@FreeBSD.org> Date: Sat, 29 Jan 2011 00:33:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218053 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" <svn-src-projects.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects> List-Post: <mailto:svn-src-projects@freebsd.org> List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, <mailto:svn-src-projects-request@freebsd.org?subject=subscribe> X-List-Received-Date: Sat, 29 Jan 2011 00:33:04 -0000 Author: imp Date: Sat Jan 29 00:33:04 2011 New Revision: 218053 URL: http://svn.freebsd.org/changeset/base/218053 Log: Kill bio leak in the normal I/O path. Now we can survive the raid_rebuild_test.sh without leaking anything. Before, we'd leak 40k bio when testing on a 200MB volume each time the test is run. # I haven't looked at tr_raid0.c to see if that's affected also. Modified: projects/graid/head/sys/geom/raid/tr_raid1.c Modified: projects/graid/head/sys/geom/raid/tr_raid1.c ============================================================================== --- projects/graid/head/sys/geom/raid/tr_raid1.c Sat Jan 29 00:21:40 2011 (r218052) +++ projects/graid/head/sys/geom/raid/tr_raid1.c Sat Jan 29 00:33:04 2011 (r218053) @@ -575,7 +575,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ struct g_raid_volume *vol; struct bio *pbp; struct g_raid_tr_raid1_object *trs; - int i; + int i, error; trs = (struct g_raid_tr_raid1_object *)tr; pbp = bp->bio_parent; @@ -793,9 +793,11 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ bp->bio_error = 0; } } + error = bp->bio_error; + g_destroy_bio(bp); if (pbp->bio_children == pbp->bio_inbed) { pbp->bio_completed = pbp->bio_length; - g_raid_iodone(pbp, bp->bio_error); + g_raid_iodone(pbp, error); } }