From owner-svn-src-projects@FreeBSD.ORG Fri Feb 4 07:02:36 2011 Return-Path: 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 288ED106566C; Fri, 4 Feb 2011 07:02:35 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D52F58FC0A; Fri, 4 Feb 2011 07:02:35 +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 p1472ZiT072639; Fri, 4 Feb 2011 07:02:35 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p1472ZZ0072637; Fri, 4 Feb 2011 07:02:35 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102040702.p1472ZZ0072637@svn.freebsd.org> From: Alexander Motin Date: Fri, 4 Feb 2011 07:02:35 +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: r218253 - 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" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Feb 2011 07:02:36 -0000 Author: mav Date: Fri Feb 4 07:02:35 2011 New Revision: 218253 URL: http://svn.freebsd.org/changeset/base/218253 Log: Idle worker thread does not guarantee idle volume. Check for inflight requests also. Modified: projects/graid/head/sys/geom/raid/g_raid.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 4 04:56:07 2011 (r218252) +++ projects/graid/head/sys/geom/raid/g_raid.c Fri Feb 4 07:02:35 2011 (r218253) @@ -1204,7 +1204,8 @@ process: TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { if (vol->v_writes == 0 && !vol->v_idle) g_raid_idle(vol, -1); - if (vol->v_tr) + if (bioq_first(&vol->v_inflight) == NULL && + vol->v_tr) G_RAID_TR_IDLE(vol->v_tr); } } @@ -1634,6 +1635,8 @@ int g_raid_start_volume(struct g_raid_vo G_RAID_EVENT_VOLUME); return (-1); } + G_RAID_DEBUG(2, "Transformation module %s chosen for %s.", + class->name, vol->v_name); vol->v_tr = obj; return (0); }