svn commit: r217907 - projects/graid/head/sys/geom/raid
John Baldwin
jhb at freebsd.org
Wed Jan 26 22:05:40 UTC 2011
On Wednesday, January 26, 2011 3:34:16 pm Warner Losh wrote:
> Author: imp
> Date: Wed Jan 26 20:34:16 2011
> New Revision: 217907
> URL: http://svn.freebsd.org/changeset/base/217907
>
> Log:
> Set arg before timeout function pointer to avoid a 1 instruction race.
>
> Modified:
> projects/graid/head/sys/geom/raid/tr_raid1.c
>
> Modified: projects/graid/head/sys/geom/raid/tr_raid1.c
>
==============================================================================
> --- projects/graid/head/sys/geom/raid/tr_raid1.c Wed Jan 26 20:29:28 2011
(r217906)
> +++ projects/graid/head/sys/geom/raid/tr_raid1.c Wed Jan 26 20:34:16 2011
(r217907)
> @@ -259,8 +259,8 @@ g_raid_tr_update_state_raid1(struct g_ra
> G_RAID_EVENT_VOLUME);
> if (s == G_RAID_VOLUME_S_DEGRADED) {
> g_raid_tr_raid1_rebuild_start(vol->v_tr, vol);
> - vol->v_timeout = g_raid_tr_raid1_idle_rebuild;
> vol->v_to_arg = trs;
> + vol->v_timeout = g_raid_tr_raid1_idle_rebuild;
> } else {
> vol->v_timeout = 0;
> vol->v_to_arg = 0;
Err, this can't solve anything without a memory barrier given the ability of
modern CPUs on at least some architectures to reorder writes.
--
John Baldwin
More information about the svn-src-projects
mailing list