summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMariusz Tkaczyk <mariusz.tkaczyk@intel.com>2018-09-03 13:52:55 +0200
committerJes Sorensen <jsorensen@fb.com>2018-09-27 10:25:06 -0400
commit29d7f182a5dd60d04365ef061021f403c5eb5402 (patch)
treeed1fcc0eca2b8aa3fe841745aa653b5a6ff18ca8
parenta882c7b1ec0eac03b49f8306f1e5816a04abe125 (diff)
downloadmdadm-29d7f182a5dd60d04365ef061021f403c5eb5402.tar.gz
mdadm.c: Fix error handling for --zero-superblock
When Kill() cannot open device or find superblock it return the same error and mdadm ignores it. Change error handling in Kill() function. Return error if device is busy, ignore it only when superblock doesn't exist- assume that metadata is zeroed. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
-rw-r--r--Kill.c5
-rw-r--r--mdadm.c2
2 files changed, 4 insertions, 3 deletions
diff --git a/Kill.c b/Kill.c
index ff52561d..d4767e29 100644
--- a/Kill.c
+++ b/Kill.c
@@ -37,7 +37,8 @@ int Kill(char *dev, struct supertype *st, int force, int verbose, int noexcl)
* Returns:
* 0 - a zero superblock was successfully written out
* 1 - failed to write the zero superblock
- * 2 - failed to open the device or find a superblock.
+ * 2 - failed to open the device.
+ * 4 - failed to find a superblock.
*/
int fd, rv = 0;
@@ -57,7 +58,7 @@ int Kill(char *dev, struct supertype *st, int force, int verbose, int noexcl)
if (verbose >= 0)
pr_err("Unrecognised md component device - %s\n", dev);
close(fd);
- return 2;
+ return 4;
}
st->ignore_hw_compat = 1;
rv = st->ss->load_super(st, fd, dev);
diff --git a/mdadm.c b/mdadm.c
index 1cf5c189..25a1abd2 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -1959,7 +1959,7 @@ static int misc_list(struct mddev_dev *devlist,
rv |= Kill(dv->devname, NULL, c->force, v, 0);
v = -1;
} while (rv == 0);
- rv &= ~2;
+ rv &= ~4;
}
continue;
case 'Q':