On Wed, Sep 02, 2020 at 04:44:38PM +0100, David Howells wrote: > +++ b/mm/fadvise.c > @@ -104,7 +104,10 @@ int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice) > if (!nrpages) > nrpages = ~0UL; > > - force_page_cache_readahead(mapping, file, start_index, nrpages); > + { > + DEFINE_READAHEAD(rac, file, mapping, start_index); > + force_page_cache_readahead(&rac, nrpages); > + } > break; This is kind of awkward. How about this: static void force_page_cache_readahead(struct address_space *mapping, struct file *file, pgoff_t index, unsigned long nr_to_read) { DEFINE_READAHEAD(rac, file, mapping, index); force_page_cache_ra(&rac, nr_to_read); } in mm/internal.h for now (and it can migrate if it needs to be somewhere else)