Pull MD fixes from Shaohua Li: "Two small fixes for MD: - an error handling fix from me - a recover bug fix for raid10 from BingJing" * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md: md/raid10: fix that replacement cannot complete recovery after reassemble MD: cleanup resources in failure
Unified · Split
| @@ -5547,7 +5547,8 @@ int md_run(struct mddev *mddev) · 5546 unmodified lines | ||
| 5547 | 5547 | else |
| 5548 | 5548 | pr_warn("md: personality for level %s is not loaded!\n", |
| 5549 | 5549 | mddev->clevel); |
| 5550 | − return -EINVAL; | |
| 5550 | + err = -EINVAL; | |
| 5551 | + goto abort; | |
| 5551 | 5552 | } |
| 5552 | 5553 | spin_unlock(&pers_lock); |
| 5553 | 5554 | if (mddev->level != pers->level) { |
| @@ -5560,7 +5561,8 @@ int md_run(struct mddev *mddev) · 6 unmodified lines | ||
| 5560 | 5561 | pers->start_reshape == NULL) { |
| 5561 | 5562 | /* This personality cannot handle reshaping... */ |
| 5562 | 5563 | module_put(pers->owner); |
| 5563 | − return -EINVAL; | |
| 5564 | + err = -EINVAL; | |
| 5565 | + goto abort; | |
| 5564 | 5566 | } |
| 5565 | 5567 | |
| 5566 | 5568 | if (pers->sync_request) { |
| @@ -5629,7 +5631,7 @@ int md_run(struct mddev *mddev) · 62 unmodified lines | ||
| 5629 | 5631 | mddev->private = NULL; |
| 5630 | 5632 | module_put(pers->owner); |
| 5631 | 5633 | bitmap_destroy(mddev); |
| 5632 | − return err; | |
| 5634 | + goto abort; | |
| 5633 | 5635 | } |
| 5634 | 5636 | if (mddev->queue) { |
| 5635 | 5637 | bool nonrot = true; |
| @@ -3893,6 +3893,13 @@ static int raid10_run(struct mddev *mddev) · 3892 unmodified lines | ||
| 3893 | 3893 | disk->rdev->saved_raid_disk < 0) |
| 3894 | 3894 | conf->fullsync = 1; |
| 3895 | 3895 | } |
| 3896 | + | |
| 3897 | + if (disk->replacement && | |
| 3898 | + !test_bit(In_sync, &disk->replacement->flags) && | |
| 3899 | + disk->replacement->saved_raid_disk < 0) { | |
| 3900 | + conf->fullsync = 1; | |
| 3901 | + } | |
| 3902 | + | |
| 3896 | 3903 | disk->recovery_disabled = mddev->recovery_disabled - 1; |
| 3897 | 3904 | } |
| 3898 | 3905 | |