svn commit: r272366 - head/sys/kern
Davide Italiano
davide at freebsd.org
Wed Oct 1 15:40:12 UTC 2014
On Wed, Oct 1, 2014 at 8:32 AM, Will Andrews <will at freebsd.org> wrote:
> 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)
>
I introduced something like this back in the days when I was at iX but
never convinced myself this is completely safe -- I assume you
investigated about possible races opened by releasing the syncer
mutex, and I would be happy if you can elaborate a bit more.
--
Davide
"There are no solved problems; there are only problems that are more
or less solved" -- Henri Poincare
More information about the svn-src-head
mailing list