Re: [PATCH v2 3/8] mm: Optimise madvise WILLNEED

From: Matthew Wilcox
Date: Mon Sep 14 2020 - 12:55:02 EST


On Mon, Sep 14, 2020 at 12:17:07PM -0400, Qian Cai wrote:
> Reverting the "Return head pages from find_*_entry" patchset [1] up to this
> patch fixed the issue that LTP madvise06 test [2] would trigger endless soft-
> lockups below. It does not help after applied patches fixed other separate
> issues in the patchset [3][4].

Thanks for the report. Could you try this?

diff --git a/mm/madvise.c b/mm/madvise.c
index 96189acd6969..2d9ceccb338d 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -234,6 +234,7 @@ static void force_shm_swapin_readahead(struct vm_area_struct *vma,

if (!xa_is_value(page))
continue;
+ xas_pause(&xas);
rcu_read_unlock();

swap = radix_to_swp_entry(page);
@@ -243,7 +244,6 @@ static void force_shm_swapin_readahead(struct vm_area_struct *vma,
put_page(page);

rcu_read_lock();
- xas_reset(&xas);
}
rcu_read_unlock();