|
@@ -1608,7 +1608,8 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
|
|
++ev1;
|
|
++ev1;
|
|
if (rdev->desc_nr >= 0 &&
|
|
if (rdev->desc_nr >= 0 &&
|
|
rdev->desc_nr < le32_to_cpu(sb->max_dev) &&
|
|
rdev->desc_nr < le32_to_cpu(sb->max_dev) &&
|
|
- le16_to_cpu(sb->dev_roles[rdev->desc_nr]) < MD_DISK_ROLE_MAX)
|
|
|
|
|
|
+ (le16_to_cpu(sb->dev_roles[rdev->desc_nr]) < MD_DISK_ROLE_MAX ||
|
|
|
|
+ le16_to_cpu(sb->dev_roles[rdev->desc_nr]) == MD_DISK_ROLE_JOURNAL))
|
|
if (ev1 < mddev->events)
|
|
if (ev1 < mddev->events)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
} else if (mddev->bitmap) {
|
|
} else if (mddev->bitmap) {
|