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 0afdc1bfd7cb..078c6f3b7e53 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -7998,7 +7998,7 @@ bool md_write_start(struct mddev *mddev, struct bio *bi) | |||
7998 | if (mddev->safemode == 1) | 7998 | if (mddev->safemode == 1) |
7999 | mddev->safemode = 0; | 7999 | mddev->safemode = 0; |
8000 | /* sync_checkers is always 0 when writes_pending is in per-cpu mode */ | 8000 | /* sync_checkers is always 0 when writes_pending is in per-cpu mode */ |
8001 | if (mddev->in_sync || !mddev->sync_checkers) { | 8001 | if (mddev->in_sync || mddev->sync_checkers) { |
8002 | spin_lock(&mddev->lock); | 8002 | spin_lock(&mddev->lock); |
8003 | if (mddev->in_sync) { | 8003 | if (mddev->in_sync) { |
8004 | mddev->in_sync = 0; | 8004 | mddev->in_sync = 0; |
@@ -8658,6 +8658,9 @@ void md_check_recovery(struct mddev *mddev) | |||
8658 | if (mddev_trylock(mddev)) { | 8658 | if (mddev_trylock(mddev)) { |
8659 | int spares = 0; | 8659 | int spares = 0; |
8660 | 8660 | ||
8661 | if (!mddev->external && mddev->safemode == 1) | ||
8662 | mddev->safemode = 0; | ||
8663 | |||
8661 | if (mddev->ro) { | 8664 | if (mddev->ro) { |
8662 | struct md_rdev *rdev; | 8665 | struct md_rdev *rdev; |
8663 | if (!mddev->external && mddev->in_sync) | 8666 | if (!mddev->external && mddev->in_sync) |