|
@@ -1597,6 +1597,11 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
|
|
mddev->new_chunk_sectors = mddev->chunk_sectors;
|
|
mddev->new_chunk_sectors = mddev->chunk_sectors;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (le32_to_cpu(sb->feature_map) & MD_FEATURE_JOURNAL) {
|
|
|
|
+ set_bit(MD_HAS_JOURNAL, &mddev->flags);
|
|
|
|
+ if (mddev->recovery_cp == MaxSector)
|
|
|
|
+ set_bit(MD_JOURNAL_CLEAN, &mddev->flags);
|
|
|
|
+ }
|
|
} else if (mddev->pers == NULL) {
|
|
} else if (mddev->pers == NULL) {
|
|
/* Insist of good event counter while assembling, except for
|
|
/* Insist of good event counter while assembling, except for
|
|
* spares (which don't need an event count) */
|
|
* spares (which don't need an event count) */
|
|
@@ -1643,8 +1648,6 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
|
|
}
|
|
}
|
|
set_bit(Journal, &rdev->flags);
|
|
set_bit(Journal, &rdev->flags);
|
|
rdev->journal_tail = le64_to_cpu(sb->journal_tail);
|
|
rdev->journal_tail = le64_to_cpu(sb->journal_tail);
|
|
- if (mddev->recovery_cp == MaxSector)
|
|
|
|
- set_bit(MD_JOURNAL_CLEAN, &mddev->flags);
|
|
|
|
rdev->raid_disk = 0;
|
|
rdev->raid_disk = 0;
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
@@ -1664,8 +1667,6 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
|
|
set_bit(WriteMostly, &rdev->flags);
|
|
set_bit(WriteMostly, &rdev->flags);
|
|
if (le32_to_cpu(sb->feature_map) & MD_FEATURE_REPLACEMENT)
|
|
if (le32_to_cpu(sb->feature_map) & MD_FEATURE_REPLACEMENT)
|
|
set_bit(Replacement, &rdev->flags);
|
|
set_bit(Replacement, &rdev->flags);
|
|
- if (le32_to_cpu(sb->feature_map) & MD_FEATURE_JOURNAL)
|
|
|
|
- set_bit(MD_HAS_JOURNAL, &mddev->flags);
|
|
|
|
} else /* MULTIPATH are always insync */
|
|
} else /* MULTIPATH are always insync */
|
|
set_bit(In_sync, &rdev->flags);
|
|
set_bit(In_sync, &rdev->flags);
|
|
|
|
|