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 <behlendorf1@llnl.gov>
Change-Id: I1ebf940a9a96c433f527f3e0dd9dc765b2645c97
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/55888
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Qian Yingjin <qian@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Alexander Zarochentsev <alexander.zarochentsev@hpe.com>
Reviewed-by: Patrick Farrell <patrick.farrell@oracle.com>
discard_cl_pages(env, io, pvec, index);
index = 0;
+ cond_resched();
spin_lock(&cli->cl_lru_list_lock);
}