--- Begin Message ---
Subject: |
stat unclear about size on disk and type of blocks discussed |
Date: |
Fri, 20 Jan 2012 02:16:04 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux i686 on x86_64; rv:8.0) Gecko/20120104 Icedove/8.0 |
Today I tried figuring out how much disk space a small file took. I used
stat, but that turned out surprisingly difficult:
# LANG=C stat htpasswd.setup
File: `htpasswd.setup'
Size: 54 Blocks: 8 IO Block: 4096 regular file
Device: 805h/2053d Inode: 5268976 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 33/www-data)
Access: 2012-01-19 15:00:58.000000000 -0500
Modify: 2012-01-19 15:00:54.000000000 -0500
Change: 2012-01-19 15:00:54.000000000 -0500
Birth: -
address@hidden:/etc/phpmyadmin#
The "real" size is clear, but at first I thought that didn't say the
size on disk.
There are 3 interesting format sequences:
%b
Number of blocks allocated (see %B)
%B
The size in bytes of each block reported by %b
%o
I/O block size
In the default format, %b is shown as "Blocks" and %o is shown as "IO
Block".
On my system, there are 2 kinds of blocks, those on the HDD, 512 bytes
each, and those of the filesystem, 4096 each. The manual's descriptions
do not make it clear which kind of block is referred to. After
verification, %b refers to HDD blocks.
I'm not sure what language should be used instead. Perhaps instead of
blocks the manual should talk about "data storage device blocks".
As for %o, if you'd ask me what "I/O block size" means without any
context, I'm far from being sure I would answer it means size on disk. I
suggest to call this Size on disk, or Size used on the filesystem.
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#10561: stat unclear about size on disk and type of blocks discussed |
Date: |
Fri, 20 Jan 2012 14:15:41 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20110816 Thunderbird/6.0 |
On 01/20/2012 02:03 PM, Jim Meyering wrote:
> Pádraig Brady wrote:
> ...
>>> As for %o, if you'd ask me what "I/O block size" means without any
>>> context, I'm far from being sure I would answer it means size on
>>> disk. I suggest to call this Size on disk, or Size used on the
>>> filesystem.
>>
>> I/O implies transfer.
>> So it corresponds to an "optimal transfer size hint"
>> This value can be different at each layer, for example:
>>
>> $ stat -c "%o" . # file level
>> $ stat -f -c "%s" . # file system level
>> # blockdev --getioopt /dev/sda # device level
>>
>>> I'm not sure what language should be used instead. Perhaps instead
>>> of blocks the manual should talk about "data storage device blocks".
>>
>> I suppose we could clarify "I/O block size" a bit.
>> How about s|I/O block size|optimal I/O block transfer size|
>
> or even without "block",
>
> "optimal I/O transfer size"
OK I'll go with "optimal I/O transfer size hint",
since there is nothing guaranteed about it,
and in fact it's often wrong.
cheers,
Pádraig.
p.s. marking bug done...
--- End Message ---