Since a few applications, and the linux manpages, seem to not really
understand what these are for, they need comments like SUSv2 has for
them. A larger discussion will be provided if requested.
--
Hans
On Tue, Feb 18, 2003 at 08:25:40PM +0300, Hans Reiser wrote:
> Since a few applications, and the linux manpages, seem to not really
> understand what these are for, they need comments like SUSv2 has for
> them. A larger discussion will be provided if requested.
> + unsigned int st_blksize; /* Optimal I/O size */
> + int f_bsize; /* Filesystem blocksize */
Yes, discussion - I wouldnt mind seeing details.
The trivial part is st_blksize: all agree.
Quoting the man page:
The value st_blksize gives the "preferred" blocksize
for efficient file system I/O. (Writing to a file in
smaller chunks may cause an inefficient read-modify-rewrite.)
The nontrivial part is f_bsize. As far as I can see
BSD and SYSV and SUS all differ. And there are the use
in struct statfs and the use in struct statvfs that are
nonequivalent.
Maybe BSD f_iosize, f_bsize in statfs corresponds to
SYSV f_bsize, f_frsize in statfs. Linux is again a
bit different.
Andries
Hello!
On Mon, Feb 24, 2003 at 11:20:09AM +0100, Andries Brouwer wrote:
> The trivial part is st_blksize: all agree.
> Quoting the man page:
> The value st_blksize gives the "preferred" blocksize
> for efficient file system I/O. (Writing to a file in
> smaller chunks may cause an inefficient read-modify-rewrite.)
> The nontrivial part is f_bsize. As far as I can see
> BSD and SYSV and SUS all differ. And there are the use
> in struct statfs and the use in struct statvfs that are
> nonequivalent.
> Maybe BSD f_iosize, f_bsize in statfs corresponds to
> SYSV f_bsize, f_frsize in statfs. Linux is again a
> bit different.
Traditionally in Linux f_bsize in struct statfs is used as FS block size.
(e.g. df calculates fs capacity by multiplying amount of blocks on
fs by f_bsize).
Actually, this is the only field in struct statfs that holds any data regarding
fs blocksize. (well, some arches have f_frsize, but it is marked as unused).
Bye,
Oleg
Andries Brouwer wrote:
>On Tue, Feb 18, 2003 at 08:25:40PM +0300, Hans Reiser wrote:
>
>
>
>>Since a few applications, and the linux manpages, seem to not really
>>understand what these are for, they need comments like SUSv2 has for
>>them. A larger discussion will be provided if requested.
>>
>>
>
>
>
>>+ unsigned int st_blksize; /* Optimal I/O size */
>>
>>
>
>
>
>>+ int f_bsize; /* Filesystem blocksize */
>>
>>
>
>Yes, discussion - I wouldnt mind seeing details.
>
>The trivial part is st_blksize: all agree.
>Quoting the man page:
>
> The value st_blksize gives the "preferred" blocksize
> for efficient file system I/O. (Writing to a file in
> smaller chunks may cause an inefficient read-modify-rewrite.)
>
Oh my, I must confess that we read just the comment on the struct in the
manpage:
blksize_t st_blksize; /* blocksize for filesystem
I/O */
and not the text below it which is correct if less clear than it could be.
How about using our comment on the struct on the manpage as it is more
clear?
How about instead saying in the manpage body:
Historically, st_blksize was the block size, and applications would do
I/O's at that size for greater efficiency of IO. Now, after some
evolution, st_blksize represents the most efficient size of an IO to
that file, and no longer always represents the actual size of blocks in
the underlying filesystem.
Or you could even use the longer comment on the struct, but then I have
always liked lng comments more than most....;-)
--
Hans