46 lines
1.6 KiB
Diff
46 lines
1.6 KiB
Diff
|
From 13ffbe89b6103c146c08eb1c9a70833306c8322b Mon Sep 17 00:00:00 2001
|
||
|
From: Pawel Baldysiak <pawel.baldysiak@intel.com>
|
||
|
Date: Wed, 16 Jul 2014 12:20:34 +0200
|
||
|
Subject: [PATCH] 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>
|
||
|
---
|
||
|
Grow.c | 5 ++++-
|
||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/Grow.c b/Grow.c
|
||
|
index a2f4f1428787..ea9cc60e1f18 100644
|
||
|
--- a/Grow.c
|
||
|
+++ b/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.
|
||
|
--
|
||
|
2.0.0
|
||
|
|