summaryrefslogtreecommitdiff
path: root/Detail.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.com>2017-03-27 14:36:56 +1100
committerJes Sorensen <Jes.Sorensen@gmail.com>2017-03-28 14:33:48 -0400
commitb4decd517d90098bc2d17d3eddfe858d8b903920 (patch)
treed6a6ffe14b643dfd5cf0f9ceff3e5e6c1d72dadd /Detail.c
parent1ab9ed2afb7ca50c4f922a0b85c4e6631becde02 (diff)
downloadmdadm-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>
Diffstat (limited to 'Detail.c')
-rw-r--r--Detail.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/Detail.c b/Detail.c
index cb33794..3d92855 100644
--- a/Detail.c
+++ b/Detail.c
@@ -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 {