Subject: stat unclear about size on disk and type of blocks discussed

From: Filipus Klutiero <[email-masked]>
Date: Fri, 20 Jan 2012 02:16:04 -0500

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: -
> root@vinci:/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.