Report device size correctly in --detail for Large devices.
Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
parent
8fac0577f0
commit
6ee5c05a11
8
Detail.c
8
Detail.c
|
@ -166,9 +166,13 @@ int Detail(char *dev, int brief, int test)
|
||||||
printf(" Array Size : %llu%s\n", (larray_size>>10), human_size(larray_size));
|
printf(" Array Size : %llu%s\n", (larray_size>>10), human_size(larray_size));
|
||||||
if (array.level >= 1) {
|
if (array.level >= 1) {
|
||||||
if (array.major_version != 0 &&
|
if (array.major_version != 0 &&
|
||||||
larray_size >= 0xFFFFFFFFULL)
|
(larray_size >= 0xFFFFFFFFULL|| array.size == 0)) {
|
||||||
printf(" Device Size : unknown\n");
|
unsigned long long dsize = get_component_size(fd);
|
||||||
|
if (dsize > 0)
|
||||||
|
printf(" Device Size : %llu%s\n", dsize, human_size((long long)array.size<<10));
|
||||||
else
|
else
|
||||||
|
printf(" Device Size : unknown\n");
|
||||||
|
} else
|
||||||
printf(" Device Size : %d%s\n", array.size, human_size((long long)array.size<<10));
|
printf(" Device Size : %d%s\n", array.size, human_size((long long)array.size<<10));
|
||||||
}
|
}
|
||||||
printf(" Raid Devices : %d\n", array.raid_disks);
|
printf(" Raid Devices : %d\n", array.raid_disks);
|
||||||
|
|
4
util.c
4
util.c
|
@ -688,10 +688,10 @@ unsigned long long get_component_size(int fd)
|
||||||
int n;
|
int n;
|
||||||
if (fstat(fd, &stb)) return 0;
|
if (fstat(fd, &stb)) return 0;
|
||||||
if (major(stb.st_rdev) == 9)
|
if (major(stb.st_rdev) == 9)
|
||||||
sprintf(fname, "/sys/block/md%d/component_size",
|
sprintf(fname, "/sys/block/md%d/md/component_size",
|
||||||
minor(stb.st_rdev));
|
minor(stb.st_rdev));
|
||||||
else
|
else
|
||||||
sprintf(fname, "/sys/block/md_d%d/component_size",
|
sprintf(fname, "/sys/block/md_d%d/md/component_size",
|
||||||
minor(stb.st_rdev)/16);
|
minor(stb.st_rdev)/16);
|
||||||
fd = open(fname, O_RDONLY);
|
fd = open(fname, O_RDONLY);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
|
|
Loading…
Reference in New Issue