Messages in this thread Patch in this message | | | From | skseofh@gmail ... | Subject | [PATCH] mm/vmscan.c: no need to double-check if free pages are under high-watermark | Date | Sun, 2 Jan 2022 12:31:29 +0900 |
| |
From: Daero Lee <skseofh@gmail.com>
In kswapd_try_to_sleep function, to check whether kswapd can sleep, the prepare_kswapd_sleep function is called twice.
If free pages are below high-watermark in the first call, the @remaining variable is not updated at 0 and the prepare_kswapd_sleep function is called for the second time.
I think it is necessary to set the initial value of the @remaining to a non-zero value to prevent consecutive calls to the same function.
Signed-off-by: Daero Lee <skseofh@gmail.com> --- mm/vmscan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c index 700434db5735..1217ecec5bbb 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4331,7 +4331,7 @@ static int balance_pgdat(pg_data_t *pgdat, int order, int highest_zoneidx) /* * Return the order kswapd stopped reclaiming at as * prepare_kswapd_sleep() takes it into account. If another caller - * entered the allocator slow path while kswapd was awake, order will + * entered the allqocator slow path while kswapd was awake, order will * remain at the higher level. */ return sc.order; @@ -4355,7 +4355,7 @@ static enum zone_type kswapd_highest_zoneidx(pg_data_t *pgdat, static void kswapd_try_to_sleep(pg_data_t *pgdat, int alloc_order, int reclaim_order, unsigned int highest_zoneidx) { - long remaining = 0; + long remaining = ~0; DEFINE_WAIT(wait); if (freezing(current) || kthread_should_stop()) -- 2.25.1
| |