Re: Block I/O Mystery

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <[email protected]> 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux