write(2) size is limited by INT_MAX on amd64 -- is it a bug or a feature?

Artem Belevich fbsdlist at src.cx
Fri Apr 2 18:53:11 UTC 2010


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?

Thanks,
--Artem


More information about the freebsd-hackers mailing list