Hi, I noticed the following in the manpage for posix_fallocate. It currently (in man-pages 3.19) says under "Errors": EINVAL offset or len was less than 0. However, the Linux kernel also returns EINVAL if len is *equal* to 0. (See fallocate() in http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=fs/open.c;hb=HEAD). This follows IEEE Std 1003.1-2001, which says (http://www.opengroup.org/onlinepubs/009695399/functions/posix_fallocate.html): [EINVAL] The len argument was zero or the offset argument was less than zero. (Interestingly, this doesn't mention what should happen if len is negative...) However POSIX.1-2008 says (http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html): [EINVAL] The len argument is less than zero, or the offset argument is less than zero, or the underlying file system does not support this operation. Thus the manpage should probably be updated to reflect that you cannot rely on len being allowed to be 0 in portable code.
(In reply to comment #0) Hi, Thanks for the great supporting info on this bug report. > Hi, > I noticed the following in the manpage for posix_fallocate. It currently (in > man-pages 3.19) says under "Errors": > EINVAL offset or len was less than 0. > However, the Linux kernel also returns EINVAL if len is *equal* to 0. (See > fallocate() in > > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=fs/open.c;hb=HEAD). > This follows IEEE Std 1003.1-2001, which says > > (http://www.opengroup.org/onlinepubs/009695399/functions/posix_fallocate.html): > [EINVAL] > The len argument was zero or the offset argument was less than zero. > (Interestingly, this doesn't mention what should happen if len is > negative...) > However POSIX.1-2008 says > > (http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html): > [EINVAL] > The len argument is less than zero, or the offset argument is less than > zero, or the underlying file system does not support this operation. > Thus the manpage should probably be updated to reflect that you cannot rely > on > len being allowed to be 0 in portable code. For man-pages-3.20, I added the words "or equal" when talking about 'len;under teh EINVAL description. I also added text under CONFORMING TO describing the POSIX.1-* specifications for the EINVAL error. Cheers, Michael PS See also: https://www.opengroup.org/austin/interps/uploads/40/14574/AI-162.txt