diff options
author | NeilBrown <neilb@suse.com> | 2017-03-27 14:36:56 +1100 |
---|---|---|
committer | Jes Sorensen <Jes.Sorensen@gmail.com> | 2017-03-28 14:33:48 -0400 |
commit | b4decd517d90098bc2d17d3eddfe858d8b903920 (patch) | |
tree | d6a6ffe14b643dfd5cf0f9ceff3e5e6c1d72dadd | |
parent | 1ab9ed2afb7ca50c4f922a0b85c4e6631becde02 (diff) | |
download | mdadm-b4decd517d90098bc2d17d3eddfe858d8b903920.tar.gz |
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>
-rw-r--r-- | Detail.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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 { |