Darrick and Brian have done amazing work debugging the race I created in the folio BIO iterator. The readahead problem was deterministic, so easy to fix. The following changes since commit a7391ad3572431a354c927cf8896e86e50d7d0bf: Merge tag 'iomm-fixes-v5.18-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu (2022-05-04 11:04:52 -0700) are available in the Git repository at: git://git.infradead.org/users/willy/pagecache.git tags/folio-5.18f for you to fetch changes up to b9ff43dd27434dbd850b908e2e0e1f6e794efd9b: mm/readahead: Fix readahead with large folios (2022-05-05 00:47:29 -0400) ---------------------------------------------------------------- Two folio fixes for 5.18: - Fix a race when we were calling folio_next() in the BIO folio iter without holding a reference, meaning the folio could be split or freed, and we'd jump to the next page instead of the intended next folio. - Fix readahead creating single-page folios instead of the intended large folios when doing reads that are not a power of two in size. ---------------------------------------------------------------- Matthew Wilcox (Oracle) (2): block: Do not call folio_next() on an unreferenced folio mm/readahead: Fix readahead with large folios include/linux/bio.h | 5 ++++- mm/readahead.c | 15 +++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-)