mm/vmscan: don't use NUMA_NO_NODE as indicator of page on different node
authorWei Yang <richard.weiyang@gmail.com>
Fri, 13 May 2022 03:23:00 +0000 (20:23 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 13 May 2022 14:20:14 +0000 (07:20 -0700)
Now we are sure there is at least one page on page_list, so it is safe to
get the nid of it.  This means it is not necessary to use NUMA_NO_NODE as
an indicator for the beginning of iteration or a page on different node.

Link: https://lkml.kernel.org/r/20220429014426.29223-2-richard.weiyang@gmail.com
Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Minchan Kim <minchan@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vmscan.c

index 43883ff..9cfce14 100644 (file)
@@ -2562,7 +2562,7 @@ static unsigned int reclaim_page_list(struct list_head *page_list,
 
 unsigned long reclaim_pages(struct list_head *page_list)
 {
-       int nid = NUMA_NO_NODE;
+       int nid;
        unsigned int nr_reclaimed = 0;
        LIST_HEAD(node_page_list);
        struct page *page;
@@ -2573,10 +2573,9 @@ unsigned long reclaim_pages(struct list_head *page_list)
 
        noreclaim_flag = memalloc_noreclaim_save();
 
+       nid = page_to_nid(lru_to_page(page_list));
        do {
                page = lru_to_page(page_list);
-               if (nid == NUMA_NO_NODE)
-                       nid = page_to_nid(page);
 
                if (nid == page_to_nid(page)) {
                        ClearPageActive(page);
@@ -2585,7 +2584,7 @@ unsigned long reclaim_pages(struct list_head *page_list)
                }
 
                nr_reclaimed += reclaim_page_list(&node_page_list, NODE_DATA(nid));
-               nid = NUMA_NO_NODE;
+               nid = page_to_nid(lru_to_page(page_list));
        } while (!list_empty(page_list));
 
        nr_reclaimed += reclaim_page_list(&node_page_list, NODE_DATA(nid));