|
@@ -8286,6 +8286,7 @@ void md_check_recovery(struct mddev *mddev)
|
|
|
(mddev->flags & MD_UPDATE_SB_FLAGS & ~ (1<<MD_CHANGE_PENDING)) ||
|
|
|
test_bit(MD_RECOVERY_NEEDED, &mddev->recovery) ||
|
|
|
test_bit(MD_RECOVERY_DONE, &mddev->recovery) ||
|
|
|
+ test_bit(MD_RELOAD_SB, &mddev->flags) ||
|
|
|
(mddev->external == 0 && mddev->safemode == 1) ||
|
|
|
(mddev->safemode == 2 && ! atomic_read(&mddev->writes_pending)
|
|
|
&& !mddev->in_sync && mddev->recovery_cp == MaxSector)
|
|
@@ -8334,6 +8335,9 @@ void md_check_recovery(struct mddev *mddev)
|
|
|
rdev->raid_disk < 0)
|
|
|
md_kick_rdev_from_array(rdev);
|
|
|
}
|
|
|
+
|
|
|
+ if (test_and_clear_bit(MD_RELOAD_SB, &mddev->flags))
|
|
|
+ md_reload_sb(mddev, mddev->good_device_nr);
|
|
|
}
|
|
|
|
|
|
if (!mddev->external) {
|