----- Original Message ----- > From: "Guoqing Jiang" <gqjiang@xxxxxxxx> > To: "Xiao Ni" <xni@xxxxxxxxxx> > Cc: linux-raid@xxxxxxxxxxxxxxx, ncroxon@xxxxxxxxxx, "jes sorensen" <jes.sorensen@xxxxxxxxx> > Sent: Wednesday, July 5, 2017 9:56:35 AM > Subject: Re: [MDADM PATCH 1/1] Array size is wrong when run mdadm -E > > > > On 07/04/2017 05:55 PM, Xiao Ni wrote: > > > > ----- Original Message ----- > >> From: "Guoqing Jiang" <gqjiang@xxxxxxxx> > >> To: "Xiao Ni" <xni@xxxxxxxxxx>, linux-raid@xxxxxxxxxxxxxxx > >> Cc: ncroxon@xxxxxxxxxx, "jes sorensen" <jes.sorensen@xxxxxxxxx> > >> Sent: Tuesday, July 4, 2017 5:03:30 PM > >> Subject: Re: [MDADM PATCH 1/1] Array size is wrong when run mdadm -E > >> > >> > >> > >> On 07/04/2017 02:50 PM, Xiao Ni wrote: > >>> The size of array shows wrongly. It shifs wrong number. > >>> > >>> Signed-off-by: Xiao Ni <xni@xxxxxxxxxx> > >>> --- > >>> super1.c | 2 +- > >>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>> > >>> diff --git a/super1.c b/super1.c > >>> index 86ec850..f3b864d 100644 > >>> --- a/super1.c > >>> +++ b/super1.c > >>> @@ -366,7 +366,7 @@ static void examine_super1(struct supertype *st, char > >>> *homehost) > >>> } > >>> if (ddsks) { > >>> long long asize = __le64_to_cpu(sb->size); > >>> - asize = (asize << 9) * ddsks / ddsks_denom; > >>> + asize = (asize << 10) * ddsks / ddsks_denom; > >>> printf(" Array Size : %llu%s\n", > >>> asize >> 10, human_size(asize)); > >>> } > >> IIRC, sb->size represents the num of sectors, so the shift should be 9. > > Yes, it should be 9. It should pass bytes to human_size. Thanks for this. > > It was introduced in d4633e06dfc01723911627fcb104af2ffb6f6a95. So there is > > the same problem in super0. Is it ok: > > > > diff --git a/super0.c b/super0.c > > index 756cab5..4b4680c 100644 > > --- a/super0.c > > +++ b/super0.c > > @@ -131,9 +131,9 @@ static void examine_super0(struct supertype *st, char > > *homehost) > > } > > if (ddsks) { > > long long asize = sb->size; > > - asize = (asize << 10) * ddsks / ddsks_denom; > > + asize = (asize << 9) * ddsks / ddsks_denom; > > printf(" Array Size : %llu%s\n", > > - asize >> 10, human_size(asize)); > > + asize >> 9, human_size(asize)); > > } > > No, for 0.9 metadata, sb->size means KB not sector. > Thanks for this. > > } > > printf(" Raid Devices : %d\n", sb->raid_disks); > > diff --git a/super1.c b/super1.c > > index 86ec850..2bb1454 100644 > > --- a/super1.c > > +++ b/super1.c > > @@ -368,7 +368,7 @@ static void examine_super1(struct supertype *st, char > > *homehost) > > long long asize = __le64_to_cpu(sb->size); > > asize = (asize << 9) * ddsks / ddsks_denom; > > printf(" Array Size : %llu%s\n", > > - asize >> 10, human_size(asize)); > > + asize >> 9, human_size(asize)); > > } > > if (sb->size != sb->data_size) > > printf(" Used Dev Size : %llu%s\n", > > It is better that you can provide the output of "mdadm -E DISK" etc to prove > current code is wrong, at least I can see correct output from my side. [root@dell-per210-01 mdadm]# mdadm -E /dev/loop0 /dev/loop0: Magic : a92b4efc Version : 1.2 Feature Map : 0x0 Array UUID : 34f18365:ebf46416:ae1f365d:71cc579c Name : 0 Creation Time : Tue Jul 4 02:09:03 2017 Raid Level : raid5 Raid Devices : 3 Avail Dev Size : 8261632 (3.94 GiB 4.23 GB) Array Size : 6291456 (6.00 GiB 6.44 GB) Used Dev Size : 6291456 (3.00 GiB 3.22 GB) Ah, I know it wants to show Array Size in KB. It's a raid5 with 3 loop devices. I thought they are all sectors subconsciously. But it's better to show sizes with the same unit. Right? Regards Xiao -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html