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