On 9/3/18 7:52 AM, Mariusz Tkaczyk wrote: > 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. Applied! Thanks, Jes > Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@xxxxxxxxx> > --- > Kill.c | 5 +++-- > mdadm.c | 2 +- > 2 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/Kill.c b/Kill.c > index ff52561..d4767e2 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 1cf5c18..25a1abd 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': >