]> granicus.if.org Git - spl/commitdiff
Dump log from current process when required
authorBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 23 Apr 2010 22:55:02 +0000 (15:55 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 23 Apr 2010 22:55:02 +0000 (15:55 -0700)
When dumping a debug log first check that it is safe to create
a new thread and block waiting for it.  If we are in an atomic
context or irqs and disabled it is not safe to sleep and we
must write out of the debug log from the current process.

module/spl/spl-debug.c

index a3fcd74e0625d8524737f194841869adccc84438..0602a1a89cf35177372a19f0e395011ce01ca64d 100644 (file)
@@ -1112,6 +1112,9 @@ void spl_debug_bug(char *file, const char *func, const int line, int flags)
                 /* not reached */
         }
 
+       if (in_atomic() || irqs_disabled())
+               flags |= DL_NOTHREAD;
+
         /* Ensure all debug pages and dumped by current cpu */
          if (spl_debug_panic_on_bug)
                 spl_panic_in_progress = 1;