diff options
| -rw-r--r-- | drivers/md/md.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index dbedc58d8c00..61aacab424cf 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
| @@ -4326,8 +4326,7 @@ action_store(struct mddev *mddev, const char *page, size_t len) | |||
| 4326 | } | 4326 | } |
| 4327 | mddev_unlock(mddev); | 4327 | mddev_unlock(mddev); |
| 4328 | } | 4328 | } |
| 4329 | } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || | 4329 | } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) |
| 4330 | test_bit(MD_RECOVERY_NEEDED, &mddev->recovery)) | ||
| 4331 | return -EBUSY; | 4330 | return -EBUSY; |
| 4332 | else if (cmd_match(page, "resync")) | 4331 | else if (cmd_match(page, "resync")) |
| 4333 | clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); | 4332 | clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); |
| @@ -4340,8 +4339,12 @@ action_store(struct mddev *mddev, const char *page, size_t len) | |||
| 4340 | return -EINVAL; | 4339 | return -EINVAL; |
| 4341 | err = mddev_lock(mddev); | 4340 | err = mddev_lock(mddev); |
| 4342 | if (!err) { | 4341 | if (!err) { |
| 4343 | clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); | 4342 | if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) |
| 4344 | err = mddev->pers->start_reshape(mddev); | 4343 | err = -EBUSY; |
| 4344 | else { | ||
| 4345 | clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); | ||
| 4346 | err = mddev->pers->start_reshape(mddev); | ||
| 4347 | } | ||
| 4345 | mddev_unlock(mddev); | 4348 | mddev_unlock(mddev); |
| 4346 | } | 4349 | } |
| 4347 | if (err) | 4350 | if (err) |
