Detail: handle non-existent arrays better.

If you call "mdadm --detail" with a device file for an array which
doesn't exist, such as by
  mknod /dev/md57 b 9 57
  mdadm --detail /dev/md57

you get an unhelpful message about and inactive RAID0, and return
status is '0'.  This is confusing.

So catch this possibility and print a more useful message, and
return a non-zero status.

Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
This commit is contained in:
NeilBrown 2017-03-27 14:36:56 +11:00 committed by Jes Sorensen
parent 1ab9ed2afb
commit b4decd517d
1 changed files with 8 additions and 0 deletions

View File

@ -110,6 +110,14 @@ int Detail(char *dev, struct context *c)
if (ioctl(fd, GET_ARRAY_INFO, &array) == 0) {
inactive = 0;
} else if (errno == ENODEV && sra) {
if (sra->array.major_version == -1 &&
sra->array.minor_version == -1 &&
sra->devs == NULL) {
pr_err("Array associated with md device %s does not exist.\n", dev);
close(fd);
sysfs_free(sra);
return rv;
}
array = sra->array;
inactive = 1;
} else {