diff options
author | Mariusz Tkaczyk <mariusz.tkaczyk@intel.com> | 2018-09-03 13:52:55 +0200 |
---|---|---|
committer | Jes Sorensen <jsorensen@fb.com> | 2018-09-27 10:25:06 -0400 |
commit | 29d7f182a5dd60d04365ef061021f403c5eb5402 (patch) | |
tree | ed1fcc0eca2b8aa3fe841745aa653b5a6ff18ca8 | |
parent | a882c7b1ec0eac03b49f8306f1e5816a04abe125 (diff) | |
download | mdadm-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.c | 5 | ||||
-rw-r--r-- | mdadm.c | 2 |
2 files changed, 4 insertions, 3 deletions
@@ -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); @@ -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': |