From: Brian Behlendorf Date: Tue, 30 Jul 2024 15:40:19 +0000 (-0700) Subject: LU-18053 osc: add another cond_resched() to osc_lru_shrink() X-Git-Tag: 2.15.90~57 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=66549c1540b2931ae1d1d1ebb50afbf15683baf4;p=fs%2Flustre-release.git LU-18053 osc: add another cond_resched() to osc_lru_shrink() When discarding pages osc_lru_shrink() eventually calls delete_from_page_cache() which must aquire a spin lock on the page cache. On systems with a large number of CPUs this can result in spinlock contention and soft lockups. Add a call to cond_resched() to yield the CPU as needed. This is a follow up to LU-17630. Signed-off-by: Brian Behlendorf Change-Id: I1ebf940a9a96c433f527f3e0dd9dc765b2645c97 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/55888 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Qian Yingjin Reviewed-by: Oleg Drokin Reviewed-by: Alexander Zarochentsev Reviewed-by: Patrick Farrell --- diff --git a/lustre/osc/osc_page.c b/lustre/osc/osc_page.c index dbe84578..57a23a7 100644 --- a/lustre/osc/osc_page.c +++ b/lustre/osc/osc_page.c @@ -784,6 +784,7 @@ static long osc_lru_list_shrink(const struct lu_env *env, discard_cl_pages(env, io, pvec, index); index = 0; + cond_resched(); spin_lock(&cli->cl_lru_list_lock); }