On Wed, Jun 14, 2023 at 05:35:02PM +0200, Hannes Reinecke wrote: > Hmm. And for that I'm hitting include/linux/pagemap.h:1250 pretty > consistently; something's going haywire with readahead. Is that this one? VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio); in __readahead_folio() > Matthew, are you sure that this one: > > /** > > * readahead_length - The number of bytes in this readahead request. > > * @rac: The readahead request. > > */ > static inline size_t readahead_length(struct readahead_control *rac) > { > return rac->_nr_pages * PAGE_SIZE; > } > > is tenable for large folios? > Especially as we have in mm/readahead.c:499 > > ractl->_nr_pages += 1UL << order; > > Hmm? Yes. nr_pages really is the number of pages. I'm somewhat surprised you're not hitting: VM_BUG_ON_FOLIO(index & (folio_nr_pages(folio) - 1), folio); in __filemap_add_folio(). Maybe the filesystems in question always access indices which are naturally aligned to the block size.