Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Oct 2014 15:32:29 +0000 (UTC)
From:      Will Andrews <will@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r272366 - head/sys/kern
Message-ID:  <201410011532.s91FWTZL050853@svn.freebsd.org>

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



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