From owner-svn-src-projects@FreeBSD.ORG Tue Oct 4 17:02:11 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 19148106564A; Tue, 4 Oct 2011 17:02:11 +0000 (UTC) (envelope-from lev@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 08E438FC13; Tue, 4 Oct 2011 17:02:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p94H2AVs068613; Tue, 4 Oct 2011 17:02:10 GMT (envelope-from lev@svn.freebsd.org) Received: (from lev@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p94H2Aeu068611; Tue, 4 Oct 2011 17:02:10 GMT (envelope-from lev@svn.freebsd.org) Message-Id: <201110041702.p94H2Aeu068611@svn.freebsd.org> From: "Lev A. Serebryakov" Date: Tue, 4 Oct 2011 17:02:10 +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: r226002 - projects/geom-events/sys/geom/mirror 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: Tue, 04 Oct 2011 17:02:11 -0000 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: