During reshape, resync/rebuild in the same container is not possible due to fact that all arrays in container has to share the same disks set. Block new resync/rebuild process initialization and setting resync_start to 0 while any reshape in container is active. This avoids breaking container reshape and doesn't allow for starting multiple processes /resync/rebuild and reshape/ at the same time in md. Signed-off-by: Adam Kwolek <adam.kwolek@xxxxxxxxx> --- super-intel.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/super-intel.c b/super-intel.c index 5504c17..4c546ac 100644 --- a/super-intel.c +++ b/super-intel.c @@ -2375,8 +2375,9 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info, info->reshape_progress = 0; info->resync_start = MaxSector; - if (map_to_analyse->map_state == IMSM_T_STATE_UNINITIALIZED || - dev->vol.dirty) { + if ((map_to_analyse->map_state == IMSM_T_STATE_UNINITIALIZED || + dev->vol.dirty) && + imsm_reshape_blocks_arrays_changes(super) == 0) { info->resync_start = 0; } if (dev->vol.migr_state) { @@ -6232,7 +6233,8 @@ static int imsm_set_array_state(struct active_array *a, int consistent) super->updates_pending++; a->last_checkpoint = 0; } - } else if (!is_resyncing(dev) && !failed) { + } else if ((!is_resyncing(dev) && !failed) && + (imsm_reshape_blocks_arrays_changes(super) == 0)) { /* mark the start of the init process if nothing is failed */ dprintf("imsm: mark resync start\n"); if (map->map_state == IMSM_T_STATE_UNINITIALIZED) -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html