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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 30, 2020 at 07:08:07PM +0200, Jan Kara wrote:
> 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.

You're right, it's inadequate.  It's safe to apply this series to the
mainline as-is because the only filesystem which creates THP today
is tmpfs and it won't call invalidate_inode_pages2_range() (afaics).
I have a followup patch which isn't part of this series which fixes it:

http://git.infradead.org/users/willy/pagecache.git/commitdiff/364283163847d1c106463223b858308c730592a1

There are other similar fixes which are also needed before we get to
allowing THPs to be added to the page cache for normal filesystems,
but I think I'm out of time for this merge window.  My plan is to submit
everything that's in this tree for the next merge window; the page cache
pieces through Andrew and the filesystem/iomap/XFS pieces through Darrick.
With good luck, all of this will be in place for 5.11.  I have about 50
patches in flight for 5.10 and it'll be about another 50 for 5.11.

Reviewer bandwidth is probably the biggest issue right now, and I
really appreciate your thoughtful comments.




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux