Re: 4.1GB limit with nfs3, 2.6 & knfsd?

Andrew Morton
2004-02-10T05:47:43Z

Mike Fedyk <mfedyk@matchmail.com> wrote:
>
> Hi,
>
> I was trying to tar and bzip2 some directories over the weekend and I think
> I may have found a bug.
>
> The operation would consistantly fail when the bzip2ed tar file hit 4.1GB
> when directed at a 2.6.1-bk2-nfs-stale-file-handles knfsd server from
> another computer running the same kernel.
>
> If I try the operation against a local filesystem, or a 2.4.24 knfsd server
> on the network there are no failures and the file is at 18GB and growing on
> the local filesystem (not enough space on the 2.4 server...).
>
> This is all from the same nfs client computer.
>
> I plan on doing some more tests with dd and cat against the server after the
> files have finished compressing.
>
> Anyone have any ideas? I know this could be userspace, but why does it work
> against a 2.4 knfsd and on the local filesystem?

Yes, something funny does seem to be happening.

I have a simple NFS mount of an ext2 filesystem via localhost and a 6GB
`dd' fails after 4G:

vmm:/mnt/localhost> strace dd if=/dev/zero of=foo bs=1M count=6000
...
write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
read(0, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
read(0, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = -1 EINVAL (Invalid argument)

vmm:/mnt/localhost> ls -l foo
-rw-r--r-- 1 akpm akpm 4296015872 Feb 9 21:36 foo

But after that, one can continue to grow the file:

vmm:/mnt/localhost> cat /dev/zero >> foo
^C
vmm:/mnt/localhost> ls -l foo
-rw-r--r-- 1 akpm akpm 4573638656 Feb 9 21:48 foo

Maybe Neil can shed some light?