Re: [PATCH v3 3/4] x86/efi: print size in binary units in efi_print_memmap

From: James Bottomley
Date: Sat Jan 23 2016 - 13:13:04 EST

On Sat, 2016-01-23 at 19:18 +0200, Andy Shevchenko wrote:
> On Sat, Jan 23, 2016 at 6:44 PM, James Bottomley
> <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> wrote:
> > Not an attack on you patch per-se, but I really hate the IEC
> > convention
> > that was essentially a ploy by disk manufacturers to inflate their
> > disk
> > sizes by 10% simply by relabelling them.
> > Everyone was happy when a GB was 2^30,
> No, not everyone. It was a misspelling done by some first storage
> producer.

No, it was the adopted convention in computer science to use units in
2^10 since all sizes were usually binary. It actually began with
memory sizes. So a GB never meant 10^9 bytes before 2007 because the
classical unit users had no idea what a byte was. The first bytes were
counted in powers of 2.

> Try to look at the problem from physics point of view. Units
> are essential part of a value. There is an agreement how to use
> multipliers and their code names. 1000 x Unit means kiloUnit. As per
> agreement.

It's not about physics (and certainly astronomers, who often take pi to
be 1 would be happy with 2^10 = 10^3) it's about politics: disk
manufacturers wanted a way to report bigger sizes, so they made a huge
fuss about the "inconsistency" of computer science using units in
increments of 2^10 and forced through this IEC standard.

> > now everyone's simply confused whenever they see GB. We had
> > to pander to this in block devices because people got annoyed when
> > we reported a size that was different from the label but are you
> > sure we have to extend the madness to memory?
> I actually don't know who is from us is being more conservative. I
> could call a madness to mess things from ancient (classical
> mathematics and physics) with something which has less than hundred
> years in development.

In engineering terms, counting in powers of 2 makes a lot of sense for
quantites using binary address busses and the IEC even recognised that
by inventing a new unit for it. Having GB mean 2^30 up to 2007 and
10^9 after it is confusing for everyone born before about 1990.