Date: Mon, 7 Feb 2011 16:14:12 +0000 (UTC) From: Alexander Motin <mav@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r218406 - projects/graid/head/sys/geom/raid Message-ID: <201102071614.p17GEC50014910@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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 {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102071614.p17GEC50014910>