|
@@ -8807,6 +8807,7 @@ void md_check_recovery(struct mddev *mddev)
|
|
|
|
|
|
|
|
if (mddev_trylock(mddev)) {
|
|
if (mddev_trylock(mddev)) {
|
|
|
int spares = 0;
|
|
int spares = 0;
|
|
|
|
|
+ bool try_set_sync = mddev->safemode != 0;
|
|
|
|
|
|
|
|
if (!mddev->external && mddev->safemode == 1)
|
|
if (!mddev->external && mddev->safemode == 1)
|
|
|
mddev->safemode = 0;
|
|
mddev->safemode = 0;
|
|
@@ -8852,7 +8853,7 @@ void md_check_recovery(struct mddev *mddev)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (!mddev->external && !mddev->in_sync) {
|
|
|
|
|
|
|
+ if (try_set_sync && !mddev->external && !mddev->in_sync) {
|
|
|
spin_lock(&mddev->lock);
|
|
spin_lock(&mddev->lock);
|
|
|
set_in_sync(mddev);
|
|
set_in_sync(mddev);
|
|
|
spin_unlock(&mddev->lock);
|
|
spin_unlock(&mddev->lock);
|