Check major number of block device when querying md device
It give error message when query a non md device. mdadm /dev/null /dev/null: is an md device, but gives "Inappropriate ioctl for device" when queried It's introduced by commit5cb8599
and8d0cd09
At first it checks whether a block is md device by function md_get_version. In this function it does mainly two jobs: 1. send request by ioctl. (now it can be replace by argument ioctlerr) 2. check the block device major number which we don't do this. We add the second judgement in this patch. Fixes:5cb8599
and8d0cd09
Reported-by: Karsten Weiss <karsten.weiss@atos.net> Signed-off-by: Xiao Ni <xni@redhat.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
This commit is contained in:
parent
002a5978f0
commit
27e39ad31c
5
Query.c
5
Query.c
|
@ -85,12 +85,11 @@ int Query(char *dev)
|
|||
|
||||
if (ioctlerr == ENODEV)
|
||||
printf("%s: is an md device which is not active\n", dev);
|
||||
else if (ioctlerr && major(stb.st_rdev) != MD_MAJOR)
|
||||
printf("%s: is not an md array\n", dev);
|
||||
else if (ioctlerr)
|
||||
printf("%s: is an md device, but gives \"%s\" when queried\n",
|
||||
dev, strerror(ioctlerr));
|
||||
else if (staterr)
|
||||
printf("%s: is not a valid md device, returning %s\n",
|
||||
dev, strerror(ioctlerr));
|
||||
else {
|
||||
printf("%s: %s %s %d devices, %d spare%s. Use mdadm --detail for more detail.\n",
|
||||
dev, human_size_brief(larray_size,IEC),
|
||||
|
|
Loading…
Reference in New Issue