Grow: Do not try to restart if reshape is running
Grow process did not check if reshape is already started when deciding about restarting. Sync_action should be checked in this case, and if reshape is running - restart flag should not be set. Otherwise, Grow process will fail to write data to sysfs, and reshape will not be continued. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
095b8088fa
commit
13ffbe89b6
5
Grow.c
5
Grow.c
|
@ -2822,6 +2822,7 @@ static int reshape_array(char *container, int fd, char *devname,
|
|||
unsigned long long array_size;
|
||||
int done;
|
||||
struct mdinfo *sra = NULL;
|
||||
char buf[20];
|
||||
|
||||
/* when reshaping a RAID0, the component_size might be zero.
|
||||
* So try to fix that up.
|
||||
|
@ -2869,7 +2870,9 @@ static int reshape_array(char *container, int fd, char *devname,
|
|||
goto release;
|
||||
}
|
||||
|
||||
if (st->ss->external && restart && (info->reshape_progress == 0)) {
|
||||
if (st->ss->external && restart && (info->reshape_progress == 0) &&
|
||||
!((sysfs_get_str(info, NULL, "sync_action", buf, sizeof(buf)) > 0) &&
|
||||
(strncmp(buf, "reshape", 7) == 0))) {
|
||||
/* When reshape is restarted from '0', very begin of array
|
||||
* it is possible that for external metadata reshape and array
|
||||
* configuration doesn't happen.
|
||||
|
|
Loading…
Reference in New Issue