|
@@ -3110,7 +3110,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);
|
|
@@ -3375,7 +3375,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(struct r5conf *conf)
|