]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
IMSM: Correct --examine output for 4k disks
authorMaksymilian Kunt <maksymilian.kunt@intel.com>
Tue, 9 May 2017 12:03:27 +0000 (14:03 +0200)
committerJes Sorensen <jsorensen@fb.com>
Thu, 11 May 2017 15:44:44 +0000 (11:44 -0400)
"Array Size" and "Per Dev Size" are incorrect for disks with sector size
different than 512B.

Calculate "Array Size" and "Per Dev Size" based on sector size. Additionally
print "Sector Size".

Signed-off-by: Maksymilian Kunt <maksymilian.kunt@intel.com>
Signed-off-by: Mariusz Dabrowski <mariusz.dabrowski@intel.com>
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
super-intel.c

index ba6f810e8af221b851ba73451c6886feaa0175d2..8ca80d3d1784a9c56c2a021fc3a45fb14b3ee8ef 100644 (file)
@@ -1482,13 +1482,16 @@ static void print_imsm_dev(struct intel_super *super,
                       ord & IMSM_ORD_REBUILD ? " (out-of-sync)" : "");
        } else
                printf("      This Slot : ?\n");
+       printf("    Sector Size : %u\n", super->sector_size);
        sz = __le32_to_cpu(dev->size_high);
        sz <<= 32;
        sz += __le32_to_cpu(dev->size_low);
-       printf("     Array Size : %llu%s\n", (unsigned long long)sz,
+       printf("     Array Size : %llu%s\n",
+                  (unsigned long long)sz * 512 / super->sector_size,
               human_size(sz * 512));
        sz = blocks_per_member(map);
-       printf("   Per Dev Size : %llu%s\n", (unsigned long long)sz,
+       printf("   Per Dev Size : %llu%s\n",
+                  (unsigned long long)sz * 512 / super->sector_size,
               human_size(sz * 512));
        printf("  Sector Offset : %llu\n",
                pba_of_lba0(map));