On 2023/7/13 00:41, Christoph Hellwig wrote:
On Wed, Jul 12, 2023 at 02:37:40PM +0800, Qu Wenruo wrote:
One of the biggest problem for metadata folio conversion is, we still
need the current page based solution (or folios with order 0) as a
fallback solution when we can not get a high order folio.
Do we? btrfs by default uses a 16k nodesize (order 2 on x86), with
a maximum of 64k (order 4). IIRC we should be able to get them pretty
reliably.
If it can be done as reliable as order 0 with NOFAIL, I'm totally fine
with that.
If not the best thning is to just a virtually contigous allocation as
fallback, i.e. use vm_map_ram.
That's also what Sweet Tea Dorminy mentioned, and I believe it's the
correct way to go (as the fallback)
Although my concern is my lack of experience on MM code, and if those
pages can still be attached to address space (with PagePrivate set).
That's what XFS uses in it's buffer
cache, and it already did so before it stopped to use page cache to
back it's buffer cache, something I plan to do for the btrfs buffer
cache as well, as the page cache algorithms tend to not work very
well for buffer based metadata, never mind that there is an incredible
amount of complex code just working around the interactions.
Thus we have the preparation patchset as the first step.
It should help no matter what the next step we go.
Thanks,
Qu