Messages in this thread | | | Date | Mon, 10 Feb 2020 19:54:12 -0800 | From | Matthew Wilcox <> | Subject | Re: [PATCH] mm: fix long time stall from mm_populate |
| |
On Mon, Feb 10, 2020 at 07:50:04PM -0800, Minchan Kim wrote: > On Mon, Feb 10, 2020 at 05:10:21PM -0800, Matthew Wilcox wrote: > > On Mon, Feb 10, 2020 at 04:19:58PM -0800, Minchan Kim wrote: > > > filemap_fault > > > find a page form page(PG_uptodate|PG_readahead|PG_writeback) > > > > Uh ... That shouldn't be possible. > > Please see shrink_page_list. Vmscan uses PG_reclaim to accelerate > page reclaim when the writeback is done so the page will have both > flags at the same time and the PG reclaim could be regarded as > PG_readahead in fault conext.
What part of fault context can make that mistake? The snippet I quoted below is from page_cache_async_readahead() where it will clearly not make that mistake. There's a lot of code here; please don't presume I know all the areas you're talking about.
> > > > /* > > * Same bit is used for PG_readahead and PG_reclaim. > > */ > > if (PageWriteback(page)) > > return; > > > > ClearPageReadahead(page);
| |