|
@@ -6840,11 +6840,14 @@ static int raid5_run(struct mddev *mddev)
|
|
|
if (IS_ERR(conf))
|
|
|
return PTR_ERR(conf);
|
|
|
|
|
|
- if (test_bit(MD_HAS_JOURNAL, &mddev->flags) && !journal_dev) {
|
|
|
- printk(KERN_ERR "md/raid:%s: journal disk is missing, force array readonly\n",
|
|
|
- mdname(mddev));
|
|
|
- mddev->ro = 1;
|
|
|
- set_disk_ro(mddev->gendisk, 1);
|
|
|
+ if (test_bit(MD_HAS_JOURNAL, &mddev->flags)) {
|
|
|
+ if (!journal_dev) {
|
|
|
+ pr_err("md/raid:%s: journal disk is missing, force array readonly\n",
|
|
|
+ mdname(mddev));
|
|
|
+ mddev->ro = 1;
|
|
|
+ set_disk_ro(mddev->gendisk, 1);
|
|
|
+ } else if (mddev->recovery_cp == MaxSector)
|
|
|
+ set_bit(MD_JOURNAL_CLEAN, &mddev->flags);
|
|
|
}
|
|
|
|
|
|
conf->min_offset_diff = min_offset_diff;
|