Cc: <linux-kernel@...>, Mel Gorman <mel@...>, William Lee Irwin III <wli@...>, David Chinner <dgc@...>, Jens Axboe <jens.axboe@...>, Badari Pulavarty <pbadari@...>
Hi,
I really like the idea of block size > page size
I just want to suggest mine ideas about how to implement it (I can't do that
since it is too compicated for me and I don't have time now)
I visualized this like that:
For size <= 4K , page still holds a 1 or more blocks.
For size > 4K:
A page holds a fraction of block, and its ->buffer_head also holds info about
that fraction.
But that ->bh contains a ->next pointer (or a list_head) that combines
all fractions of block in single one.
This will minimize changes in fs code.
Today fs blindly uses bh retured by block code.
A modifed filesystem will also read from linked ->next bhs to get all parts of
block.
For blocksizes <= 4k that ->next will be null indicating that that bh
contatins whole block.
Then inplementation of block address_space opertions should not change a lot
too.
They will be just aware that that page can be linked with other pages of same
block and do that right thing.
For example:
->readpage will not only read _that_ page but also will read all sibling pages
->writepage will magicly write not only that page but siblings too.
buffer_head alredy has pointer to page so it is easy to get page from buffer
head:
page -> private -> next -> page -> private ...
andf so on (sorry, but I did a study (for myself, trying to improve
packet-writing) on that a half year ago, so I don't remember now much about
that)
What about that ?
Best regards,
Maxim Levitsky
-