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,
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to