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>