The code example that you sent earlier shows it clearly:
there is an overflow bug.
it is extremely easy to fix too.
Marcus
Rich Rauenzahn wrote:
On Mon, Oct 4, 2010 at 2:56 AM, Matus UHLAR - fantomas
<uhlar@xxxxxxxxxxx> wrote:
On 29.09.10 17:42, Rich Rauenzahn wrote:
This code strikes me as incorrect... Basically for files > 2GB, squid
does the accounting wrong!
It's apparently just a filesystem overhead, which varies between filesystems
but may eat some % of disk space.
No, it's a bug. File system overhead doesn't account for taking 2-3
times more space than what squid says it is using. See
http://bugs.squid-cache.org/show_bug.cgi?id=3068
Note that sizeof(int) is 4 in both 32bit and 64bit compilation models.
I believe that blks * fs.blksize overflows 32bit before it is right
shifted by 10 bits.
if you want to use filesizes over 2GB on 32bit system, you must make your
program to be 64-bit capable, and compile it that way.
the same applies about using 64bit numbers.
No, "int"s are still 32bit in the 64bit compilation model. And they
will still overflow.
Rich