Messages in this thread Patch in this message | | | Date | Fri, 17 Apr 2015 20:59:39 +0200 (CEST) | From | Jiri Kosina <> | Subject | [PATCH] thp: cleanup how khugepaged enters freezer |
| |
khugepaged_do_scan() checks in every iteration whether freezing(current) is true, and in such case breaks out of the loop, which causes try_to_freeze() to be called immediately afterwards in khugepaged_wait_work().
If nothing else, this causes unnecessary freezing(current) test, and also makes the way khugepaged enters freezer a bit less obvious than necessary.
Let's just try to freeze directly, instead of splitting it into two (directly adjacent) phases.
Signed-off-by: Jiri Kosina <jkosina@suse.cz> ---
Stumbled upon this when debugging something completely unrelated.
mm/huge_memory.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 078832c..b3d8cd8 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2799,7 +2799,7 @@ static void khugepaged_do_scan(void) cond_resched(); - if (unlikely(kthread_should_stop() || freezing(current))) + if (unlikely(kthread_should_stop() || try_to_freeze())) break; spin_lock(&khugepaged_mm_lock); @@ -2820,8 +2820,6 @@ static void khugepaged_do_scan(void) static void khugepaged_wait_work(void) { - try_to_freeze(); - if (khugepaged_has_work()) { if (!khugepaged_scan_sleep_millisecs) return; -- Jiri Kosina SUSE Labs
| |