Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Mar 2011 15:21:43 -0700
From:      Xin LI <delphij@delphij.net>
To:        Alexander Best <arundel@freebsd.org>
Cc:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/146205: df(1) fails to display total space on a 100PB	filesystem correctly
Message-ID:  <4D87CF77.8070304@delphij.net>
In-Reply-To: <201103202210.p2KMA3dS053483@freefall.freebsd.org>
References:  <201103202210.p2KMA3dS053483@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------070602090703020805030205
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

I think this is with the *= 100 clause.  100PB would use up to bit 57,
and the *= 100 would consume an additional >5 bits, causing an integer
overflow here.

Fixing this requires an overhaul on the humanize_number(3) function I
think.  I think, we would have to split the result into quotient and
reminder to deal with this.

I have put together the attached patch but there *MIGHT* be some
regressions which I didn't have time yet to write some test cases to
verify that.  Comments/test cases welcome.

Cheers,
- -- 
Xin LI <delphij@delphij.net>	http://www.delphij.net/
FreeBSD - The Power to Serve!	       Live free or die
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (FreeBSD)

iQEcBAEBCAAGBQJNh892AAoJEATO+BI/yjfBblYH/1ujN1ZD79Z1YKjSN+IgdZTq
skSeB6cUdJr93LSxSnhojr7drOM4kO/m1tchsZtnYJxIK/rbU7e9vVhLo7VJUKU5
6jJ3sw6alOBFsi6eYRSb1LQRRAznMZqOC5Sg/cnbPuMLC5JDPT/P6wdKvEpebsst
ffodPWHS3J3o0pbzt2C3IUlBEUby4wy5ZLerntT5SheuBc8HijCBk6XcTW1/7Iw8
bJxfJEKyp+ctvhoh4qINdLHkEnTEdLKm3Dqt/VlrbMh4JkHUbcql7diZ2LP4+5ce
vv9FL4alEc4lV/hX2HDuvhNKCC4vWx7iCeed0pwc8ui0KLB2UsG1Fj/E6saMYOE=
=qGsE
-----END PGP SIGNATURE-----

--------------070602090703020805030205
Content-Type: text/plain;
 name="humanize_number.c.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="humanize_number.c.diff"

SW5kZXg6IGh1bWFuaXplX251bWJlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh1bWFuaXplX251
bWJlci5jCShyZXZpc2lvbiAyMTk4NDIpCisrKyBodW1hbml6ZV9udW1iZXIuYwkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsOCArNDcsOSBAQAogICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCwgaW50
IHNjYWxlLCBpbnQgZmxhZ3MpCiB7CiAJY29uc3QgY2hhciAqcHJlZml4ZXMsICpzZXA7Ci0J
aW50CWIsIGksIHIsIG1heHNjYWxlLCBzMSwgczIsIHNpZ247CisJaW50CWksIHIsIG1heHNj
YWxlLCBzMSwgczIsIHNpZ247CiAJaW50NjRfdAlkaXZpc29yLCBtYXg7CisJaW50NjRfdCBx
dW90aWVudCA9IGJ5dGVzLCByZW1pbmRlciA9IDA7CiAJc2l6ZV90CWJhc2VsZW47CiAKIAlh
c3NlcnQoYnVmICE9IE5VTEwpOwpAQCAtODgsMTEgKzg5LDEwIEBACiAJCWJ1ZlswXSA9ICdc
MCc7CiAJaWYgKGJ5dGVzIDwgMCkgewogCQlzaWduID0gLTE7Ci0JCWJ5dGVzICo9IC0xMDA7
CisJCXF1b3RpZW50ID0gLXF1b3RpZW50OwogCQliYXNlbGVuID0gMzsJCS8qIHNpZ24sIGRp
Z2l0LCBwcmVmaXggKi8KIAl9IGVsc2UgewogCQlzaWduID0gMTsKLQkJYnl0ZXMgKj0gMTAw
OwogCQliYXNlbGVuID0gMjsJCS8qIGRpZ2l0LCBwcmVmaXggKi8KIAl9CiAJaWYgKGZsYWdz
ICYgSE5fTk9TUEFDRSkKQEAgLTEwOSw3ICsxMDksNyBAQAogCiAJaWYgKHNjYWxlICYgKEhO
X0FVVE9TQ0FMRSB8IEhOX0dFVFNDQUxFKSkgewogCQkvKiBTZWUgaWYgdGhlcmUgaXMgYWRk
aXRpb25hbCBjb2x1bW5zIGNhbiBiZSB1c2VkLiAqLwotCQlmb3IgKG1heCA9IDEwMCwgaSA9
IGxlbiAtIGJhc2VsZW47IGktLSA+IDA7KQorCQlmb3IgKG1heCA9IDEsIGkgPSBsZW4gLSBi
YXNlbGVuOyBpLS0gPiAwOykKIAkJCW1heCAqPSAxMDsKIAogCQkvKgpAQCAtMTE3LDI5ICsx
MTcsMzMgQEAKIAkJICogSWYgdGhlcmUgd2lsbCBiZSBhbiBvdmVyZmxvdyBieSB0aGUgcm91
bmRpbmcgYmVsb3csCiAJCSAqIGRpdmlkZSBvbmNlIG1vcmUuCiAJCSAqLwotCQlmb3IgKGkg
PSAwOyBieXRlcyA+PSBtYXggLSA1MCAmJiBpIDwgbWF4c2NhbGU7IGkrKykKLQkJCWJ5dGVz
IC89IGRpdmlzb3I7CisJCWZvciAoaSA9IDA7IHF1b3RpZW50ID4gbWF4ICYmIGkgPCBtYXhz
Y2FsZTsgaSsrKSB7CisJCQlyZW1pbmRlciA9IHF1b3RpZW50ICUgZGl2aXNvcjsKKwkJCXF1
b3RpZW50IC89IGRpdmlzb3I7CisJCX0KIAogCQlpZiAoc2NhbGUgJiBITl9HRVRTQ0FMRSkK
IAkJCXJldHVybiAoaSk7Ci0JfSBlbHNlCi0JCWZvciAoaSA9IDA7IGkgPCBzY2FsZSAmJiBp
IDwgbWF4c2NhbGU7IGkrKykKLQkJCWJ5dGVzIC89IGRpdmlzb3I7CisJfSBlbHNlIHsKKwkJ
Zm9yIChpID0gMDsgaSA8IHNjYWxlICYmIGkgPCBtYXhzY2FsZTsgaSsrKSB7CisJCQlyZW1p
bmRlciA9IHF1b3RpZW50ICUgZGl2aXNvcjsKKwkJCXF1b3RpZW50IC89IGRpdmlzb3I7CisJ
CX0KKwl9CiAKIAkvKiBJZiBhIHZhbHVlIDw9IDkuOSBhZnRlciByb3VuZGluZyBhbmQgLi4u
ICovCi0JaWYgKGJ5dGVzIDwgOTk1ICYmIGkgPiAwICYmIGZsYWdzICYgSE5fREVDSU1BTCkg
eworCWlmIChxdW90aWVudCA9PSAwICYmIHJlbWluZGVyIDwgOTk1ICYmIGkgPiAwICYmIGZs
YWdzICYgSE5fREVDSU1BTCkgewogCQkvKiBiYXNlbGVuICsgXDAgKyAuTiAqLwogCQlpZiAo
bGVuIDwgYmFzZWxlbiArIDEgKyAyKQogCQkJcmV0dXJuICgtMSk7Ci0JCWIgPSAoKGludCli
eXRlcyArIDUpIC8gMTA7Ci0JCXMxID0gYiAvIDEwOwotCQlzMiA9IGIgJSAxMDsKKwkJczEg
PSAoaW50KXF1b3RpZW50ICsgKCgoaW50KXJlbWluZGVyICsgNSkgLyAxMDApOworCQlzMiA9
ICgoKGludClyZW1pbmRlciArIDUpIC8gMTApICUgMTA7CiAJCXIgPSBzbnByaW50ZihidWYs
IGxlbiwgIiVkJXMlZCVzJXMlcyIsCiAJCSAgICBzaWduICogczEsIGxvY2FsZWNvbnYoKS0+
ZGVjaW1hbF9wb2ludCwgczIsCiAJCSAgICBzZXAsIFNDQUxFMlBSRUZJWChpKSwgc3VmZml4
KTsKIAl9IGVsc2UKIAkJciA9IHNucHJpbnRmKGJ1ZiwgbGVuLCAiJSIgUFJJZDY0ICIlcyVz
JXMiLAotCQkgICAgc2lnbiAqICgoYnl0ZXMgKyA1MCkgLyAxMDApLAorCQkgICAgc2lnbiAq
IChxdW90aWVudCArIChyZW1pbmRlciArIDUpIC8gMTAwKSwKIAkJICAgIHNlcCwgU0NBTEUy
UFJFRklYKGkpLCBzdWZmaXgpOwogCiAJcmV0dXJuIChyKTsK
--------------070602090703020805030205--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D87CF77.8070304>