On 2016-07-06 11:22, Joerg Schilling wrote:
"Austin S. Hemmelgarn" <address@hidden> wrote:
It should be obvious that a file that offers content also has
allocated blocks.
What you mean then is that POSIX _implies_ that this is the case, but
does not say whether or not it is required. There are all kinds of
counterexamples to this too, procfs is a POSIX compliant filesystem
(every POSIX certified system has it), yet does not display the behavior
that you expect, every single file in /proc for example reports 0 for
both st_blocks and st_size, and yet all of them very obviously have
content.
You are mistaken.
stat /proc/$$/as
File: `/proc/6518/as'
Size: 2793472 Blocks: 5456 IO Block: 512 regular file
Device: 5440000h/88342528d Inode: 7557 Links: 1
Access: (0600/-rw-------) Uid: ( xx/ joerg) Gid: ( xx/ bs)
Access: 2016-07-06 16:33:15.660224934 +0200
Modify: 2016-07-06 16:33:15.660224934 +0200
Change: 2016-07-06 16:33:15.660224934 +0200
stat /proc/$$/auxv
File: `/proc/6518/auxv'
Size: 168 Blocks: 1 IO Block: 512 regular file
Device: 5440000h/88342528d Inode: 7568 Links: 1
Access: (0400/-r--------) Uid: ( xx/ joerg) Gid: ( xx/ bs)
Access: 2016-07-06 16:33:15.660224934 +0200
Modify: 2016-07-06 16:33:15.660224934 +0200
Change: 2016-07-06 16:33:15.660224934 +0200
Any correct implementation of /proc returns the expected numbers in
st_size as
well as in st_blocks.
Odd, because I get 0 for both values on all the files in /proc/self and
all the top level files on all kernels I tested prior to sending that
e-mail, for reference, they include:
* A direct clone of HEAD on torvalds/linux
* 4.6.3 mainline
* 4.1.27 mainline
* 4.6.3 mainline with a small number of local patches on top
* 4.1.19+ from the Raspberry Pi foundation
* 4.4.6-gentoo (mainline with Gentoo patches on top)
* 4.5.5-linode69 (not certain about the patches on top)