diff options
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index c99634612fc4..b01e458d31e9 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -7996,7 +7996,7 @@ bool md_write_start(struct mddev *mddev, struct bio *bi) | |||
7996 | if (mddev->safemode == 1) | 7996 | if (mddev->safemode == 1) |
7997 | mddev->safemode = 0; | 7997 | mddev->safemode = 0; |
7998 | /* sync_checkers is always 0 when writes_pending is in per-cpu mode */ | 7998 | /* sync_checkers is always 0 when writes_pending is in per-cpu mode */ |
7999 | if (mddev->in_sync || !mddev->sync_checkers) { | 7999 | if (mddev->in_sync || mddev->sync_checkers) { |
8000 | spin_lock(&mddev->lock); | 8000 | spin_lock(&mddev->lock); |
8001 | if (mddev->in_sync) { | 8001 | if (mddev->in_sync) { |
8002 | mddev->in_sync = 0; | 8002 | mddev->in_sync = 0; |
@@ -8656,6 +8656,9 @@ void md_check_recovery(struct mddev *mddev) | |||
8656 | if (mddev_trylock(mddev)) { | 8656 | if (mddev_trylock(mddev)) { |
8657 | int spares = 0; | 8657 | int spares = 0; |
8658 | 8658 | ||
8659 | if (!mddev->external && mddev->safemode == 1) | ||
8660 | mddev->safemode = 0; | ||
8661 | |||
8659 | if (mddev->ro) { | 8662 | if (mddev->ro) { |
8660 | struct md_rdev *rdev; | 8663 | struct md_rdev *rdev; |
8661 | if (!mddev->external && mddev->in_sync) | 8664 | if (!mddev->external && mddev->in_sync) |