On 10/17/19 12:53 AM, Fengguang Wu wrote: > This avoids duplicated PageReferenced() calls. > No behavior change. > > Signed-off-by: Fengguang Wu <fengguang.wu@xxxxxxxxx> Acked-by: Vlastimil Babka <vbabka@xxxxxxx> > --- > mm/swap.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/mm/swap.c b/mm/swap.c > index 38a52b9..c55720c 100644 > --- a/mm/swap.c > +++ b/mm/swap.c > @@ -373,9 +373,15 @@ void mark_page_accessed(struct page *page) > page = compound_head(page); > inc_node_page_state(page, NR_ACCESSED); > > - if (!PageActive(page) && !PageUnevictable(page) && > - PageReferenced(page)) { > - > + if (!PageReferenced(page)) { > + SetPageReferenced(page); > + } else if (PageUnevictable(page)) { > + /* > + * Unevictable pages are on the "LRU_UNEVICTABLE" list. But, > + * this list is never rotated or maintained, so marking an > + * evictable page accessed has no effect. > + */ > + } else if (!PageActive(page)) { > /* > * If the page is on the LRU, queue it for activation via > * activate_page_pvecs. Otherwise, assume the page is on a > @@ -389,8 +395,6 @@ void mark_page_accessed(struct page *page) > ClearPageReferenced(page); > if (page_is_file_cache(page)) > workingset_activation(page); > - } else if (!PageReferenced(page)) { > - SetPageReferenced(page); > } > if (page_is_idle(page)) > clear_page_idle(page); >