I can reproduce the issue - and I don't think it is specific to s390x.
There is indeed rounding happening but the size value is _stored_ rounded which is the problem.
1.876GiB is not a multiple of 1MiB. Actually, it does not even represent a number of bytes:
> 1.876 * 1024 ** 3 = 2014339661.824
The closest aligned value would be 2015363072 but humanize_size(2015363072) would return 1.876G.
We should store the value as a number of bytes instead.
I can reproduce the issue - and I don't think it is specific to s390x.
There is indeed rounding happening but the size value is _stored_ rounded which is the problem.
1.876GiB is not a multiple of 1MiB. Actually, it does not even represent a number of bytes:
> 1.876 * 1024 ** 3 = 2014339661.824
The closest aligned value would be 2015363072 but humanize_ size(2015363072 ) would return 1.876G.
We should store the value as a number of bytes instead.