svn commit: r316032 - head/sys/geom/mirror

Mark Johnston markj at FreeBSD.org
Mon Mar 27 16:25:59 UTC 2017


Author: markj
Date: Mon Mar 27 16:25:58 2017
New Revision: 316032
URL: https://svnweb.freebsd.org/changeset/base/316032

Log:
  Refine r301173 a bit.
  
  - Don't execute any of g_mirror_shutdown_post_sync() when panicking. We
    cannot safely idle the mirror or stop synchronization in that state, and
    the current attempts to do so complicate debugging of gmirror itself.
  - Check for a non-NULL panicstr instead of using SCHEDULER_STOPPED(). The
    latter was added for use in the locking primitives.
  
  Reviewed by:	mav, pjd
  MFC after:	2 weeks
  Sponsored by:	Dell EMC Isilon

Modified:
  head/sys/geom/mirror/g_mirror.c

Modified: head/sys/geom/mirror/g_mirror.c
==============================================================================
--- head/sys/geom/mirror/g_mirror.c	Mon Mar 27 16:18:19 2017	(r316031)
+++ head/sys/geom/mirror/g_mirror.c	Mon Mar 27 16:25:58 2017	(r316032)
@@ -3040,7 +3040,7 @@ g_mirror_destroy(struct g_mirror_softc *
 	g_topology_assert_not();
 	sx_assert(&sc->sc_lock, SX_XLOCKED);
 
-	if (sc->sc_provider_open != 0 || SCHEDULER_STOPPED()) {
+	if (sc->sc_provider_open != 0) {
 		switch (how) {
 		case G_MIRROR_DESTROY_SOFT:
 			G_MIRROR_DEBUG(1,
@@ -3374,6 +3374,9 @@ g_mirror_shutdown_post_sync(void *arg, i
 	struct g_mirror_softc *sc;
 	int error;
 
+	if (panicstr != NULL)
+		return;
+
 	mp = arg;
 	g_topology_lock();
 	g_mirror_shutdown = 1;


More information about the svn-src-all mailing list