On 09/05/2025 21:50, Pankaj Raghav (Samsung) wrote: >>>> >>> >>> 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. Ahh, I see. That might have been where it came from, but IMHO, it still didn't really belong there; just because the size is bigger than 4 pages, it doesn't mean you would never want to use order-1 folios - there are alignment considerations that can cause that. The logic in page_cache_ra_order() used to know to avoid order-1. > > 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. Yep agreed. I'll make this change in the next version. > > -- > Pankaj > > [1] https://lore.kernel.org/all/ZH0GvxAdw1RO2Shr@xxxxxxxxxxxxxxxxxxxx/