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

Gleb Smirnoff glebius at FreeBSD.org
Wed Jun 1 22:11:55 UTC 2016


Author: glebius
Date: Wed Jun  1 22:11:54 2016
New Revision: 301173
URL: https://svnweb.freebsd.org/changeset/base/301173

Log:
  When we are in panic, always go the asynchronous path in g_mirror_destroy(),
  otherwise the system will hang.
  
  This is a temporarily least intrusive crutch to get certain panicing systems
  dumping. The proper fix should question is g_mirror_destroy() should be called
  on a panicing system at all.
  
  Discussed with:	mav

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

Modified: head/sys/geom/mirror/g_mirror.c
==============================================================================
--- head/sys/geom/mirror/g_mirror.c	Wed Jun  1 22:04:10 2016	(r301172)
+++ head/sys/geom/mirror/g_mirror.c	Wed Jun  1 22:11:54 2016	(r301173)
@@ -2989,7 +2989,8 @@ g_mirror_destroy(struct g_mirror_softc *
 	sx_assert(&sc->sc_lock, SX_XLOCKED);
 
 	pp = sc->sc_provider;
-	if (pp != NULL && (pp->acr != 0 || pp->acw != 0 || pp->ace != 0)) {
+	if (pp != NULL && (pp->acr != 0 || pp->acw != 0 || pp->ace != 0 ||
+	    SCHEDULER_STOPPED())) {
 		switch (how) {
 		case G_MIRROR_DESTROY_SOFT:
 			G_MIRROR_DEBUG(1,


More information about the svn-src-head mailing list