Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Oct 2011 17:02:10 +0000 (UTC)
From:      "Lev A. Serebryakov" <lev@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r226002 - projects/geom-events/sys/geom/mirror
Message-ID:  <201110041702.p94H2Aeu068611@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: lev (ports committer)
Date: Tue Oct  4 17:02:10 2011
New Revision: 226002
URL: http://svn.freebsd.org/changeset/base/226002

Log:
  Add g_notify_*() calls to geom_mirror

Modified:
  projects/geom-events/sys/geom/mirror/g_mirror.c

Modified: projects/geom-events/sys/geom/mirror/g_mirror.c
==============================================================================
--- projects/geom-events/sys/geom/mirror/g_mirror.c	Tue Oct  4 17:01:58 2011	(r226001)
+++ projects/geom-events/sys/geom/mirror/g_mirror.c	Tue Oct  4 17:02:10 2011	(r226002)
@@ -1998,6 +1998,8 @@ g_mirror_sync_stop(struct g_mirror_disk 
 		G_MIRROR_DEBUG(0, "Device %s: rebuilding provider %s stopped.",
 		    sc->sc_name, g_mirror_get_diskname(disk));
 	}
+	g_notify_sync_stop(sc->sc_provider, !type);
+
 	free(disk->d_sync.ds_bios, M_MIRROR);
 	disk->d_sync.ds_bios = NULL;
 	cp = disk->d_sync.ds_consumer;
@@ -2353,6 +2355,7 @@ g_mirror_update_device(struct g_mirror_s
 			 * No active disks or no disks at all,
 			 * so destroy device.
 			 */
+			g_notify_destroyed(sc->sc_provider);
 			if (sc->sc_provider != NULL)
 				g_mirror_destroy_provider(sc);
 			sc->sc_flags |= G_MIRROR_DEVICE_FLAG_DESTROY;
@@ -2529,6 +2532,9 @@ again:
 		    g_mirror_disk_state2str(disk->d_state)));
 		DISK_STATE_CHANGED();
 
+		/* Send notification */
+		g_notify_sync_start(sc->sc_provider);
+
 		if (disk->d_state == G_MIRROR_DISK_STATE_NEW)
 			disk->d_flags &= ~G_MIRROR_DISK_FLAG_DIRTY;
 		disk->d_state = state;
@@ -2580,6 +2586,11 @@ again:
 		G_MIRROR_DEBUG(0, "Device %s: provider %s disconnected.",
 		    sc->sc_name, g_mirror_get_diskname(disk));
 
+		g_notify_disconnect(sc->sc_provider, disk->d_consumer,
+			((g_mirror_ndisks(sc, -1) == 1)?
+				G_NOTIFY_DISCONNECT_DEAD:
+				G_NOTIFY_DISCONNECT_FIXABLE));
+
 		g_mirror_destroy_disk(disk);
 		break;
 	case G_MIRROR_DISK_STATE_DESTROY:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201110041702.p94H2Aeu068611>