> Andrea(s) - interested in pursuing this particular approach? In fact,
> since "bread()" uses "getblk()", it is almost sufficient to just make
> getblk() use the page cache, and the rest will follow... You can even get
> rid of the buffer hash etc, and make the buffer head noticeably smaller.
> [ Yeah, I'm being a bit optimistic - you also end up having to re-write
> "get_hash_table()" to use a page cache lookup etc. So it's definitely
> some major surgery in fs/buffer.c, but "major" might actually be just a
> couple of hundred lines ]
Well, Daniel probably has the best handle on the state of this code (it
may be that he has already done 90% of the work). I've CC'd him on this
to get him in the loop.
> And no filesystem should ever notice. They can still access the buffer
> head as if it was just a buffer head, and wouldn't care about the fact
> that it happens to be part of a mapping.
> Any pitfalls?
> [ I can see at least one already: __invalidate_buffers() and
> set_blocksize() would both have to be re-done, probably along the lines
> of "invalidate_inode_pages()" and "fsync+truncate_inode_pages()"
> respectively. ]
I think this fits in with your overall strategy as well - remove the buffer
as a "cache" object, and only use it as an I/O object, right? With this
change, all of the cache functionality is in the page cache, and the buffers
are only used as handles for I/O.
-- Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto, \ would they cancel out, leaving him still hungry?" http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to firstname.lastname@example.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/