lkml.org 
[lkml]   [2005]   [Oct]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: Block I/O Mystery
Block Device writes:
> Hi,
>
> After some more toying around, I have seen that it works correctly
> on ext2 fs but not
> on etx3. :) ...
>
> My questions inline ..
>
> On 10/7/05, Nikita Danilov <nikita@clusterfs.com> wrote:
>
> > Blocks read by bread() and friends are cached in block device (not you
> > :-) struct address_space. File data are cached in the per-inode struct
> > address_space.
>
> But even if I'm reading blocks from a device directly, they are
> finally blocks from the same inode. Why then are they stored
> separately ?

bread() has no idea about "inode". It just reads block number N from
device D. And this is how it is stored in the cache (and can later be
found there): "device D, block N".

read(), on the other hand, reads logical block i from file F, and this
is how that block (page actually) is cached: "file F, page with logical
number i within file".

These two caching mechanisms are disjoint and almost no form of
coherency is maintained between them.

All this, of course, is up to file system to implement, and different
file systems do this slightly differently.

Nikita.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-10-07 14:00    [W:0.049 / U:0.292 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site