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