On Fri, Apr 02, 2010 at 11:53:09AM -0700, Artem Belevich wrote: > Hi, > > I've ran into a problem on 8-stable/amd64 today. Basically any attempt > to pass 2GB chunk of data to write(2) returns EINVAL. It looks like > we're limiting amount of data to be written to INT_MAX which looks > rather restrictive on LP64 platforms. NetBSD/OpenBSD do use SSIZE_MAX > which does seem to be the limit specified by POSIX, if I'm looking at > the correct specification here > http://www.opengroup.org/onlinepubs/000095399/functions/write.html > > A bit of googling shows that this issue was also recently mentioned on > svn-src-all: > http://www.mail-archive.com/svn-src-...@freebsd.org/msg18266.html > > Was the INT_MAX limit in FreeBSD imposed intentionally, even on 64-bit > platforms or is it a bug that needs fixing?
I did some preliminary work for this, changing the type of uio_resid member of struct uio in stable/8 and HEAD to ssize_t. I have half-finished patch that takes this to completion, allowing SSIZE_MAX maximal i/o. No ETA when it will be done.
pgpwWyO3ucHNS.pgp
Description: PGP signature