diff options
author | NeilBrown <neilb@suse.com> | 2017-03-27 05:36:56 +0200 |
---|---|---|
committer | Jes Sorensen <Jes.Sorensen@gmail.com> | 2017-03-28 20:33:48 +0200 |
commit | b4decd517d90098bc2d17d3eddfe858d8b903920 (patch) | |
tree | d6a6ffe14b643dfd5cf0f9ceff3e5e6c1d72dadd /Detail.c | |
parent | Add 'force' flag to *hot_remove_disk(). (diff) | |
download | mdadm-b4decd517d90098bc2d17d3eddfe858d8b903920.tar.xz mdadm-b4decd517d90098bc2d17d3eddfe858d8b903920.zip |
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.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 { |