Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Jun 2016 22:11:54 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r301173 - head/sys/geom/mirror
Message-ID:  <201606012211.u51MBsV8060041@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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,



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