From owner-svn-src-projects@FreeBSD.ORG Mon Feb 7 16:14:12 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 93247106566C; Mon, 7 Feb 2011 16:14:12 +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 68A928FC12; Mon, 7 Feb 2011 16:14:12 +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 p17GEC3R014913; Mon, 7 Feb 2011 16:14:12 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p17GEC50014910; Mon, 7 Feb 2011 16:14:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201102071614.p17GEC50014910@svn.freebsd.org> From: Alexander Motin Date: Mon, 7 Feb 2011 16:14:12 +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: r218406 - 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: Mon, 07 Feb 2011 16:14:12 -0000 Author: mav Date: Mon Feb 7 16:14:12 2011 New Revision: 218406 URL: http://svn.freebsd.org/changeset/base/218406 Log: Define and use G_RAID_NODE_E_WAKE constant. Modified: projects/graid/head/sys/geom/raid/g_raid.c projects/graid/head/sys/geom/raid/g_raid.h Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Mon Feb 7 15:47:43 2011 (r218405) +++ projects/graid/head/sys/geom/raid/g_raid.c Mon Feb 7 16:14:12 2011 (r218406) @@ -133,6 +133,8 @@ g_raid_node_event2str(int event) { switch (event) { + case G_RAID_NODE_E_WAKE: + return ("WAKE"); case G_RAID_NODE_E_START: return ("START"); default: @@ -1467,6 +1469,8 @@ g_raid_update_node(struct g_raid_softc * G_RAID_DEBUG(2, "Event %s for node %s.", g_raid_node_event2str(event), sc->sc_name); + if (event == G_RAID_NODE_E_WAKE) + return (0); if (sc->sc_md) G_RAID_MD_EVENT(sc->sc_md, NULL, event); return (0); @@ -1509,7 +1513,8 @@ g_raid_access(struct g_provider *pp, int opens = g_raid_nopens(sc); if (opens == 0) { sc->sc_stopping = G_RAID_DESTROY_HARD; - g_raid_event_send(sc, 0, 0); /* Wake up worker. */ + /* Wake up worker to make it selfdestruct. */ + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); } } /* Handle open volume destruction. */ @@ -1699,7 +1704,7 @@ g_raid_destroy_node(struct g_raid_softc kproc_exit(0); } else { /* Wake up worker to make it selfdestruct. */ - g_raid_event_send(sc, 0, 0); + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); } return (0); } @@ -1746,8 +1751,10 @@ g_raid_destroy_volume(struct g_raid_volu } G_RAID_DEBUG(2, "Volume %s destroyed.", vol->v_name); free(vol, M_RAID); - if (sc->sc_stopping == G_RAID_DESTROY_HARD) - g_raid_event_send(sc, 0, 0); /* Wake up worker. */ + if (sc->sc_stopping == G_RAID_DESTROY_HARD) { + /* Wake up worker to let it selfdestruct. */ + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); + } return (0); } @@ -1815,7 +1822,7 @@ g_raid_destroy(struct g_raid_softc *sc, /* Mark node for destruction. */ sc->sc_stopping = G_RAID_DESTROY_HARD; /* Wake up worker to let it selfdestruct. */ - g_raid_event_send(sc, 0, 0); + g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0); /* Sleep until node destroyed. */ sx_sleep(&sc->sc_stopping, &sc->sc_lock, PRIBIO | PDROP, "r:destroy", 0); Modified: projects/graid/head/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.h Mon Feb 7 15:47:43 2011 (r218405) +++ projects/graid/head/sys/geom/raid/g_raid.h Mon Feb 7 16:14:12 2011 (r218406) @@ -240,6 +240,7 @@ struct g_raid_volume { LIST_ENTRY(g_raid_volume) v_global_next; /* Global list entry. */ }; +#define G_RAID_NODE_E_WAKE 0x00 #define G_RAID_NODE_E_START 0x01 struct g_raid_softc {