imsm: use correct map when validating ppl
Use the first map to get the correct disk when rebuilding and not the failed disk from the second map. Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
This commit is contained in:
parent
98e96bdbef
commit
2fc0fc63a9
|
@ -6119,7 +6119,6 @@ static int validate_ppl_imsm(struct supertype *st, struct mdinfo *info,
|
||||||
struct ppl_header *ppl_hdr;
|
struct ppl_header *ppl_hdr;
|
||||||
__u32 crc;
|
__u32 crc;
|
||||||
struct imsm_dev *dev;
|
struct imsm_dev *dev;
|
||||||
struct imsm_map *map;
|
|
||||||
__u32 idx;
|
__u32 idx;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned long long ppl_offset = 0;
|
unsigned long long ppl_offset = 0;
|
||||||
|
@ -6134,8 +6133,7 @@ static int validate_ppl_imsm(struct supertype *st, struct mdinfo *info,
|
||||||
}
|
}
|
||||||
|
|
||||||
dev = get_imsm_dev(super, info->container_member);
|
dev = get_imsm_dev(super, info->container_member);
|
||||||
map = get_imsm_map(dev, MAP_X);
|
idx = get_imsm_disk_idx(dev, disk->disk.raid_disk, MAP_0);
|
||||||
idx = get_imsm_disk_idx(dev, disk->disk.raid_disk, MAP_X);
|
|
||||||
d = get_imsm_dl_disk(super, idx);
|
d = get_imsm_dl_disk(super, idx);
|
||||||
|
|
||||||
if (!d || d->index < 0 || is_failed(&d->disk))
|
if (!d || d->index < 0 || is_failed(&d->disk))
|
||||||
|
@ -6225,6 +6223,8 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret == 1) {
|
if (ret == 1) {
|
||||||
|
struct imsm_map *map = get_imsm_map(dev, MAP_X);
|
||||||
|
|
||||||
if (map->map_state == IMSM_T_STATE_UNINITIALIZED ||
|
if (map->map_state == IMSM_T_STATE_UNINITIALIZED ||
|
||||||
(map->map_state == IMSM_T_STATE_NORMAL &&
|
(map->map_state == IMSM_T_STATE_NORMAL &&
|
||||||
!(dev->vol.dirty & RAIDVOL_DIRTY)))
|
!(dev->vol.dirty & RAIDVOL_DIRTY)))
|
||||||
|
|
Loading…
Reference in New Issue