On Mon, Dec 15, 2025 at 10:19:00PM +0800, Jinchao Wang wrote:
page_cache_ra_order() and page_cache_ra_unbounded() read mapping minimum folio constraints before taking the invalidate lock, allowing concurrent changes to violate page cache invariants.
Move the lookups under filemap_invalidate_lock_shared() to ensure readahead allocations respect the mapping constraints.
Why are the mapping folio size constraints being changed? They're supposed to be set at inode instantiation and then never changed.