From: Matthew Wilcox <mawil...@microsoft.com>

Slightly shorter and easier to read code.

Signed-off-by: Matthew Wilcox <mawil...@microsoft.com>
---
 mm/khugepaged.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index 9f49d0cd61c2..15f1b2d81a69 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -1534,8 +1534,7 @@ static void khugepaged_scan_shmem(struct mm_struct *mm,
                pgoff_t start, struct page **hpage)
 {
        struct page *page = NULL;
-       struct radix_tree_iter iter;
-       void **slot;
+       XA_STATE(xas, &mapping->pages, start);
        int present, swap;
        int node = NUMA_NO_NODE;
        int result = SCAN_SUCCEED;
@@ -1544,17 +1543,11 @@ static void khugepaged_scan_shmem(struct mm_struct *mm,
        swap = 0;
        memset(khugepaged_node_load, 0, sizeof(khugepaged_node_load));
        rcu_read_lock();
-       radix_tree_for_each_slot(slot, &mapping->pages, &iter, start) {
-               if (iter.index >= start + HPAGE_PMD_NR)
-                       break;
-
-               page = radix_tree_deref_slot(slot);
-               if (radix_tree_deref_retry(page)) {
-                       slot = radix_tree_iter_retry(&iter);
+       xas_for_each(&xas, page, start + HPAGE_PMD_NR - 1) {
+               if (xas_retry(&xas, page))
                        continue;
-               }
 
-               if (radix_tree_exception(page)) {
+               if (xa_is_value(page)) {
                        if (++swap > khugepaged_max_ptes_swap) {
                                result = SCAN_EXCEED_SWAP_PTE;
                                break;
@@ -1593,7 +1586,7 @@ static void khugepaged_scan_shmem(struct mm_struct *mm,
                present++;
 
                if (need_resched()) {
-                       slot = radix_tree_iter_resume(slot, &iter);
+                       xas_pause(&xas);
                        cond_resched_rcu();
                }
        }
-- 
2.15.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to