Re: [RFC PATCH v4 1/5] mm/readahead: Honour new_order in page_cache_ra_order()
From: Pankaj Raghav (Samsung) <hidden>
Date: 2025-05-09 20:50:50
Also in:
linux-fsdevel, linux-mm, lkml
From: Pankaj Raghav (Samsung) <hidden>
Date: 2025-05-09 20:50:50
Also in:
linux-fsdevel, linux-mm, lkml
quoted
quoted
So we always had a fallback to do_page_cache_ra() if the size of the readahead is less than 4 pages (16k). I think this was there because we were adding `2` to the new_order:If this is the reason for the magic number 4, then it's a bug in itself IMHO. 4 pages is only 16K when the page size is 4K; arm64 supports other page sizes. But additionally, it's not just ra->size that dictates the final order of the folio; it also depends on alignment in the file, EOF, etc.
IIRC, initially we were not able to use order-1 folios[1], so we always did a fallback for any order < 2 using do_page_cache_ra(). I think that is where the magic order 2 (4 pages) is coming. Please someone can correct me if I am wrong. But we don't have that limitation for file-backed folios anymore, so the fallback for ra->size < 4 is probably not needed. So the only time we do a fallback is if we don't support large folios.
If we remove the fallback condition completely, things will still work out. So unless someone can explain the reason for that condition (Matthew?), my vote would be to remove it entirely.
I am actually fine with removing the first part of this fallback condition. But as I said, we still need to do a fallback if we don't support large folios. -- Pankaj [1] https://lore.kernel.org/all/ZH0GvxAdw1RO2Shr@casper.infradead.org/ (local)