On 11/8/24 11:21 AM, Matthew Wilcox wrote: > On Fri, Nov 08, 2024 at 10:43:27AM -0700, Jens Axboe wrote: >> +++ b/mm/readahead.c >> @@ -191,7 +191,13 @@ static void read_pages(struct readahead_control *rac) >> static struct folio *ractl_alloc_folio(struct readahead_control *ractl, >> gfp_t gfp_mask, unsigned int order) >> { >> - return filemap_alloc_folio(gfp_mask, order); >> + struct folio *folio; >> + >> + folio = filemap_alloc_folio(gfp_mask, order); >> + if (folio && ractl->uncached) >> + folio_set_uncached(folio); > > If we've just allocated it, it should be safe to use > __folio_set_uncached() here, no? Indeed, we can use __folio_set_uncached() here. I'll make that change. > Not that I'm keen on using a folio flag here, but I'm reserving judgement > on that unti I've got further through this series and see how it's used. > I can see that it might be necessary. I knew that'd be one of the more contentious items here... On the read side, we can get by without the flag. But for writeback we do need it. I just kept it consistent and used folio_*_uncached() throughout because of that. -- Jens Axboe