write(2) size is limited by INT_MAX on amd64 -- is it a bug or
a feature?
Kostik Belousov
kostikbel at gmail.com
Fri Apr 2 19:05:45 UTC 2010
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-all@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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20100402/809a29fd/attachment.pgp
More information about the freebsd-hackers
mailing list