On Thu, May 04, 2006 at 01:04:08PM +0200, Niklas Edmundsson wrote: > On Thu, 4 May 2006, Joe Orton wrote: > > >>This was on XFS and on an NFS mount. It should be noted that this > >>works on a 32bit (also Ubuntu Breezy) machine with identical config. > > > >Can you try it on a local ext3 filesystem? > > Same results.
It would be useful if you could report this to Ubuntu, I don't know whether it's some bug in specific kernels, or what. It works fine for all 64-bit Fedora/RHEL boxes I have tested on (2.4, 2.6, x86_64, ia64, ...) ... > Your guess was correct, it's the count value that's the problem. 1GB > is OK, 2GB gives EINVAL. The file makes it through OK too, at least > the md5sum matches ;) > > So, I'd suggest going with that fix/kludge and change server/core.c to > use apr_brigade_insert_file(), and possibly other places that needs > the fix. It won't hurt performance that much calling sendfile() every > 1GB even on those platforms that can cope with larger sendfile-chunks. OK, great, thanks for testing this out. I think it will actually be better to do this in the Linux-specific apr_socket_sendfile() implementation, the issue is not after all brigade-specific; I've committed this: http://svn.apache.org/viewcvs.cgi?rev=399750&view=rev joe
