Skip to content

Commit

Permalink
md: don't insist on valid event count for spare devices.
Browse files Browse the repository at this point in the history
Devices which know that they are spares do not really need to have
an event count that matches the rest of the array, so there are no
data-in-sync issues. It is enough that the uuid matches.
So remove the requirement that the event count is up-to-date.

We currently still write out and event count on spares, but this
allows us in a year or 3 to stop doing that completely.

Signed-off-by: NeilBrown <neilb@suse.de>
  • Loading branch information
NeilBrown committed May 18, 2010
1 parent a8707c0 commit be6800a
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions drivers/md/md.c
Original file line number Diff line number Diff line change
Expand Up @@ -1070,10 +1070,13 @@ static int super_90_validate(mddev_t *mddev, mdk_rdev_t *rdev)
mddev->bitmap_info.default_offset;

} else if (mddev->pers == NULL) {
/* Insist on good event counter while assembling */
/* Insist on good event counter while assembling, except
* for spares (which don't need an event count) */
++ev1;
if (ev1 < mddev->events)
return -EINVAL;
if (sb->disks[rdev->desc_nr].state & (
(1<<MD_DISK_SYNC) | (1 << MD_DISK_ACTIVE)))
if (ev1 < mddev->events)
return -EINVAL;
} else if (mddev->bitmap) {
/* if adding to array with a bitmap, then we can accept an
* older device ... but not too old.
Expand Down Expand Up @@ -1469,10 +1472,14 @@ static int super_1_validate(mddev_t *mddev, mdk_rdev_t *rdev)
}

} else if (mddev->pers == NULL) {
/* Insist of good event counter while assembling */
/* Insist of good event counter while assembling, except for
* spares (which don't need an event count) */
++ev1;
if (ev1 < mddev->events)
return -EINVAL;
if (rdev->desc_nr >= 0 &&
rdev->desc_nr < le32_to_cpu(sb->max_dev) &&
le16_to_cpu(sb->dev_roles[rdev->desc_nr]) < 0xfffe)
if (ev1 < mddev->events)
return -EINVAL;
} else if (mddev->bitmap) {
/* If adding to array with a bitmap, then we can accept an
* older device, but not too old.
Expand Down

0 comments on commit be6800a

Please sign in to comment.