Re: [PATCH v2 12/12] mm/filemap: Return only head pages from find_get_entries

From: Jan Kara
Date: Wed Sep 30 2020 - 13:08:12 EST


On Wed 30-09-20 13:36:37, Matthew Wilcox wrote:
> On Wed, Sep 30, 2020 at 02:15:12PM +0200, Jan Kara wrote:
> > On Mon 14-09-20 14:00:42, Matthew Wilcox (Oracle) wrote:
> > > All callers now expect head (and base) pages, and can handle multiple
> > > head pages in a single batch, so make find_get_entries() behave that way.
> > > Also take the opportunity to make it use the pagevec infrastructure
> > > instead of open-coding how pvecs behave. This has the side-effect of
> > > being able to append to a pagevec with existing contents, although we
> > > don't make use of that functionality anywhere yet.
> > >
> > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx>
> >
> > Looks good to me. You can add:
> >
> > Reviewed-by: Jan Kara <jack@xxxxxxx>
> >
> > I'm just curious: What has happened to pagevec_lookup_entries() call in
> > invalidate_inode_pages2_range()? Your series appears to be based on a tree
> > where the call already does not exist...
>
> That went away in patch 10 of this series.

Ah, I see. Thanks. Then I'm somewhat wondering is really
invalidate_inode_pages2_range() safe for THP head pages? At least the:

unmap_mapping_pages(mapping, index, 1, false);

doesn't look adequate for THP head pages... do_launder_page() is also
doubtful but probably currently OK because THPs cannot be dirty at this
moment. But how about THPs that are partialy inside start-end range? So far
the function didn't care because it was operating on page basis so it
didn't care but now it is probably relevant... At least it would warrant a
comment in some changelog if you are convinced everything is safe.

Honza

--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR