imsm: FIX: Add array map state transition for failures during initialization
During initialization disk failure can occur also. Add code for such case in imsm_set_disk() to support such event. Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
fc8ca06447
commit
6ce1fbf188
|
@ -5718,6 +5718,25 @@ static int is_rebuilding(struct imsm_dev *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int is_initializing(struct imsm_dev *dev)
|
||||
{
|
||||
struct imsm_map *migr_map;
|
||||
|
||||
if (!dev->vol.migr_state)
|
||||
return 0;
|
||||
|
||||
if (migr_type(dev) != MIGR_INIT)
|
||||
return 0;
|
||||
|
||||
migr_map = get_imsm_map(dev, 1);
|
||||
|
||||
if (migr_map->map_state == IMSM_T_STATE_UNINITIALIZED)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
static void update_recovery_start(struct intel_super *super,
|
||||
struct imsm_dev *dev,
|
||||
struct mdinfo *array)
|
||||
|
@ -6501,6 +6520,12 @@ static void imsm_set_disk(struct active_array *a, int n, int state)
|
|||
super->updates_pending++;
|
||||
break;
|
||||
}
|
||||
if (is_initializing(dev)) {
|
||||
dprintf("while initialization.");
|
||||
map->map_state = map_state;
|
||||
super->updates_pending++;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case IMSM_T_STATE_FAILED: /* transition to failed state */
|
||||
dprintf("failed: ");
|
||||
|
|
Loading…
Reference in New Issue