|
@@ -1647,6 +1647,8 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
|
|
|
}
|
|
|
set_bit(Journal, &rdev->flags);
|
|
|
rdev->journal_tail = le64_to_cpu(sb->journal_tail);
|
|
|
+ if (mddev->recovery_cp == MaxSector)
|
|
|
+ set_bit(MD_JOURNAL_CLEAN, &mddev->flags);
|
|
|
break;
|
|
|
default:
|
|
|
rdev->saved_raid_disk = role;
|
|
@@ -1689,6 +1691,8 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev)
|
|
|
sb->events = cpu_to_le64(mddev->events);
|
|
|
if (mddev->in_sync)
|
|
|
sb->resync_offset = cpu_to_le64(mddev->recovery_cp);
|
|
|
+ else if (test_bit(MD_JOURNAL_CLEAN, &mddev->flags))
|
|
|
+ sb->resync_offset = cpu_to_le64(MaxSector);
|
|
|
else
|
|
|
sb->resync_offset = cpu_to_le64(0);
|
|
|
|