|
@@ -4326,8 +4326,7 @@ action_store(struct mddev *mddev, const char *page, size_t len)
|
|
|
}
|
|
|
mddev_unlock(mddev);
|
|
|
}
|
|
|
- } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) ||
|
|
|
- test_bit(MD_RECOVERY_NEEDED, &mddev->recovery))
|
|
|
+ } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))
|
|
|
return -EBUSY;
|
|
|
else if (cmd_match(page, "resync"))
|
|
|
clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
|
|
@@ -4340,8 +4339,12 @@ action_store(struct mddev *mddev, const char *page, size_t len)
|
|
|
return -EINVAL;
|
|
|
err = mddev_lock(mddev);
|
|
|
if (!err) {
|
|
|
- clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
|
|
|
- err = mddev->pers->start_reshape(mddev);
|
|
|
+ if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))
|
|
|
+ err = -EBUSY;
|
|
|
+ else {
|
|
|
+ clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
|
|
|
+ err = mddev->pers->start_reshape(mddev);
|
|
|
+ }
|
|
|
mddev_unlock(mddev);
|
|
|
}
|
|
|
if (err)
|