svn commit: r226002 - projects/geom-events/sys/geom/mirror

Lev A. Serebryakov lev at FreeBSD.org
Tue Oct 4 17:02:11 UTC 2011


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:


More information about the svn-src-projects mailing list