Messages in this thread | | | Date | Fri, 7 Oct 2005 17:06:37 +0530 | From | Block Device <> | Subject | Re: Block I/O Mystery |
| |
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 ?
> You are bypassing normal file sysetm caching and results can be > unpredictable.
Is there then a safe way to do it w/o going through the filesystem caching ?
If not, I guess the following steps will be required : a) Find out the page in the mapping corresponding to the blocks I need to write. b) Lock the page. Make changes. Mark it dirty and sync write it ?
Is there something in the kernel which does this already ?
Thanks for the help :) !
-Regards BD - 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/
| |