|
@@ -1770,8 +1770,15 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
|
|
|
if (!(le32_to_cpu(sb->feature_map) &
|
|
if (!(le32_to_cpu(sb->feature_map) &
|
|
|
MD_FEATURE_RECOVERY_BITMAP))
|
|
MD_FEATURE_RECOVERY_BITMAP))
|
|
|
rdev->saved_raid_disk = -1;
|
|
rdev->saved_raid_disk = -1;
|
|
|
- } else
|
|
|
|
|
- set_bit(In_sync, &rdev->flags);
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ /*
|
|
|
|
|
+ * If the array is FROZEN, then the device can't
|
|
|
|
|
+ * be in_sync with rest of array.
|
|
|
|
|
+ */
|
|
|
|
|
+ if (!test_bit(MD_RECOVERY_FROZEN,
|
|
|
|
|
+ &mddev->recovery))
|
|
|
|
|
+ set_bit(In_sync, &rdev->flags);
|
|
|
|
|
+ }
|
|
|
rdev->raid_disk = role;
|
|
rdev->raid_disk = role;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|