Author: will
Date: Wed Oct  1 15:32:28 2014
New Revision: 272366
URL: https://svnweb.freebsd.org/changeset/base/272366

Log:
  In the syncer, drop the sync mutex while patting the watchdog.
  
  Some watchdog drivers (like ipmi) need to sleep while patting the watchdog.
  See sys/dev/ipmi/ipmi.c:ipmi_wd_event(), which calls malloc(M_WAITOK).
  
  Submitted by: asomers
  MFC after:    1 month
  Sponsored by: Spectra Logic
  MFSpectraBSD: 637548 on 2012/10/04

Modified:
  head/sys/kern/vfs_subr.c

Modified: head/sys/kern/vfs_subr.c
==============================================================================
--- head/sys/kern/vfs_subr.c    Wed Oct  1 15:23:23 2014        (r272365)
+++ head/sys/kern/vfs_subr.c    Wed Oct  1 15:32:28 2014        (r272366)
@@ -1863,8 +1863,15 @@ sched_sync(void)
                                continue;
                        }
 
-                       if (first_printf == 0)
+                       if (first_printf == 0) {
+                               /*
+                                * Drop the sync mutex, because some watchdog
+                                * drivers need to sleep while patting
+                                */
+                               mtx_unlock(&sync_mtx);
                                wdog_kern_pat(WD_LASTVAL);
+                               mtx_lock(&sync_mtx);
+                       }
 
                }
                if (syncer_state == SYNCER_FINAL_DELAY && syncer_final_iter > 0)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to