On Wed, 03 Aug 2011 17:31:23 -0700 Dan Williams <dan.j.williams@xxxxxxxxx> wrote: > All updates that occur under STRIPE_ACTIVE should be globally visible > when STRIPE_ACTIVE clears. test_and_set_bit() implies a barrier, but > clear_bit() does not. > > Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> > --- > > This at least was the guarantee we had with sh->lock... > > drivers/md/raid5.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c > index dbae459..bd95123 100644 > --- a/drivers/md/raid5.c > +++ b/drivers/md/raid5.c > @@ -3116,7 +3116,7 @@ static void handle_stripe(struct stripe_head *sh) > struct r5dev *pdev, *qdev; > > clear_bit(STRIPE_HANDLE, &sh->state); > - if (test_and_set_bit(STRIPE_ACTIVE, &sh->state)) { > + if (test_and_set_bit_lock(STRIPE_ACTIVE, &sh->state)) { > /* already being handled, ensure it gets handled > * again when current action finishes */ > set_bit(STRIPE_HANDLE, &sh->state); > @@ -3377,7 +3377,7 @@ finish: > > return_io(s.return_bi); > > - clear_bit(STRIPE_ACTIVE, &sh->state); > + clear_bit_unlock(STRIPE_ACTIVE, &sh->state); > } > > static void raid5_activate_delayed(raid5_conf_t *conf) > > -- > To unsubscribe from this list: send the line "unsubscribe linux-raid" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html sorry for missing this before... I makes perfect sense. I've applied it and should send it upstream shortly. Thanks, NeilBrown
Attachment:
signature.asc
Description: PGP signature