diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-12-26 23:04:25 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-12-26 23:04:25 -0500 |
commit | f0cf008f6bbf5710ba583821687602ec52997a36 (patch) | |
tree | d62074714cfee4dbf4587e206fc0809bc9558e3a | |
parent | 3bef22eed98b53cfb3962884f14068251a5dd3f0 (diff) | |
parent | 312045eef985b61d74c28047ecd8eca6719d9516 (diff) |
Merge tag 'md/4.4-rc6-fix' of git://neil.brown.name/md
Pull md bugfix from Neil Brown:
"One more md fix for 4.4-rc
Fix a regression which causes reshape to not start properly sometimes"
* tag 'md/4.4-rc6-fix' of git://neil.brown.name/md:
md: remove check for MD_RECOVERY_NEEDED in action_store.
-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) |