if ((ord & IMSM_ORD_REBUILD) == 0)
continue;
set_imsm_ord_tbl_ent(map, slot, df->index | IMSM_ORD_REBUILD);
+ if (is_gen_migration(dev)) {
+ struct imsm_map *map2 = get_imsm_map(dev, 1);
+ if (slot < map2->num_members) {
+ __u32 ord2 = get_imsm_ord_tbl_ent(dev,
+ slot,
+ 1);
+ if ((unsigned)df->index ==
+ ord_to_idx(ord2))
+ set_imsm_ord_tbl_ent(map2,
+ slot,
+ df->index |
+ IMSM_ORD_REBUILD);
+ }
+ }
dprintf("set slot:%d to missing disk:%d\n", slot, df->index);
break;
}
disk->status |= FAILED_DISK;
set_imsm_ord_tbl_ent(map, slot, idx | IMSM_ORD_REBUILD);
+ if (is_gen_migration(dev)) {
+ struct imsm_map *map2 = get_imsm_map(dev, 1);
+ if (slot < map2->num_members)
+ set_imsm_ord_tbl_ent(map2, slot,
+ idx | IMSM_ORD_REBUILD);
+ }
if (map->failed_disk_num == 0xff)
map->failed_disk_num = slot;
return 1;