* [PATCH] stat.2: EOVERFLOW not only for st_size, not in bits
[not found] ` <20121022235500.GA16004-8MNqHwMchPhGJ/Ie3qa20WD2FQJk+8+b@public.gmane.org>
@ 2012-11-07 19:13 ` Simon Paillard
2012-11-11 10:41 ` Bug#604928: stat.2: EOVERFLOW not only for st_size; bit/byte confusion Michael Kerrisk (man-pages)
1 sibling, 0 replies; 3+ messages in thread
From: Simon Paillard @ 2012-11-07 19:13 UTC (permalink / raw)
To: linux-man-u79uwXL29TY76Z2rM5mHXA; +Cc: Simon Paillard
egblic: sysdeps/unix/sysv/linux/xstatconv.c it can be st_ino, st_size or
st_blocks
See http://bugs.debian.org/604928
Reported-by: Lionel Elie Mamane <lionel-vlyxx04YXHqHXe+LvDLADg@public.gmane.org>
---
man2/stat.2 | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/man2/stat.2 b/man2/stat.2
index d4838a2..c7886b0 100644
--- a/man2/stat.2
+++ b/man2/stat.2
@@ -343,15 +343,18 @@ is not a directory.
.B EOVERFLOW
.RB ( stat ())
.I path
-refers to a file whose size cannot be represented in the type
-.IR off_t .
-This can occur when an application compiled on a 32-bit platform without
+refers to a file whose size, inode number, or number of blocks cannot be represented in their respective type
+.IR off_t ,
+.IR ino_t ,
+or
+.IR blkcnt_t .
+This usually occurs when an application compiled on a 32-bit platform without
.I -D_FILE_OFFSET_BITS=64
calls
.BR stat ()
on a file whose size exceeds
.I (1<<31)-1
-bits.
+bytes.
.SH "CONFORMING TO"
These system calls conform to SVr4, 4.3BSD, POSIX.1-2001.
.\" SVr4 documents additional
--
1.7.10.4
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: Bug#604928: stat.2: EOVERFLOW not only for st_size; bit/byte confusion
[not found] ` <20121022235500.GA16004-8MNqHwMchPhGJ/Ie3qa20WD2FQJk+8+b@public.gmane.org>
2012-11-07 19:13 ` [PATCH] stat.2: EOVERFLOW not only for st_size, not in bits Simon Paillard
@ 2012-11-11 10:41 ` Michael Kerrisk (man-pages)
1 sibling, 0 replies; 3+ messages in thread
From: Michael Kerrisk (man-pages) @ 2012-11-11 10:41 UTC (permalink / raw)
To: Simon Paillard
Cc: Lionel Elie Mamane, 604928-61a8vm9lEZVf4u+23C9RwQ,
linux-man-u79uwXL29TY76Z2rM5mHXA, control-61a8vm9lEZVf4u+23C9RwQ
tags 604928 fixed-upstream
thanks
On Tue, Oct 23, 2012 at 1:55 AM, Simon Paillard <spaillard-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org> wrote:
> Control: -1 found 3.42-1
>
> On Thu, Nov 25, 2010 at 03:08:30PM +0100, Lionel Elie Mamane wrote:
>> stat(2) says:
>>
>> ERRORS
>> (...)
>> EOVERFLOW
>> (stat()) path refers to a file whose size cannot be represented in the
>> type off_t. This can occur when an application compiled on a 32-bit
>> platform without -D_FILE_OFFSET_BITS=64 calls stat() on a file whose
>> size exceeds (2<<31)-1 bits.
>>
>> 1) It would seem to me that the condition for this to occur would be a
>> file whose size exceeds (2<<31)-1 *bytes*, not "bits".
>
> Still applicable to manpages 3.43.
>
>> 2) I got this for an overflow on st_ino (64 bit kernel, 32 bit
>> userland, CIFS mount of a Windows-served share).
>
> Confirmed with
> OpenGroup: http://pubs.opengroup.org/onlinepubs/009695399/functions/stat.html
> [EOVERFLOW]
> The file size in bytes or the number of blocks allocated to the file or
> the file serial number cannot be represented correctly in the structure
> pointed to by buf.
>
> egblic: sysdeps/unix/sysv/linux/xstatconv.c it can be st_ino, st_size or st_blocks
>
>> So I'd suggest this text become something along the lines of:
>>
>> path or fd refers to a file for which the value of a field of the
>> stat structure cannot be represented in its type. This usually
>> occurs with applications compiled on a 32-bit platform without
>> -D_FILE_OFFSET_BITS=64. The most common occurrence is when such an
>> application calls stat() on a file whose size exceeds
>> (2<<31)-1 bytes; but it can also occur e.g. for the st_ino field,
>> e.g. when such an application is run on a 64 bit kernel.
>
> An other proposal attached.
Thanks Simon. I applied a modified version of your patch, as below.
Cheers,
Michael
--- a/man2/stat.2
+++ b/man2/stat.2
@@ -341,17 +341,23 @@ A component of the path prefix of
is not a directory.
.TP
.B EOVERFLOW
-.RB ( stat ())
.I path
-refers to a file whose size cannot be represented in the type
-.IR off_t .
-This can occur when an application compiled on a 32-bit platform without
+or
+.I fd
+refers to a file whose size, inode number,
+or number of blocks cannot be represented in, respectively, the types
+.IR off_t ,
+.IR ino_t ,
+or
+.IR blkcnt_t .
+This error can occur when, for example,
+an application compiled on a 32-bit platform without
.I -D_FILE_OFFSET_BITS=64
calls
.BR stat ()
on a file whose size exceeds
.I (1<<31)-1
-bits.
+bytes.
.SH "CONFORMING TO"
These system calls conform to SVr4, 4.3BSD, POSIX.1-2001.
.\" SVr4 documents additional
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Author of "The Linux Programming Interface"; http://man7.org/tlpi/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread