diff --git a/drivers/md/md.c b/drivers/md/md.c index daa885ee4d60..21efb0b949a6 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -8932,6 +8932,7 @@ void md_check_recovery(struct mddev *mddev) if (mddev_trylock(mddev)) { int spares = 0; + bool try_set_sync = mddev->safemode != 0; if (!mddev->external && mddev->safemode == 1) mddev->safemode = 0; @@ -8977,7 +8978,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); set_in_sync(mddev); spin_unlock(&mddev->lock);