summaryrefslogtreecommitdiff
path: root/sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch')
-rw-r--r--sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch b/sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch
new file mode 100644
index 000000000000..717317b8a2d0
--- /dev/null
+++ b/sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch
@@ -0,0 +1,45 @@
+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 14/14] 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 a2f4f14..ea9cc60 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
+