Thread (10 messages) 10 messages, 2 authors, 2021-06-17

Re: [PATCH v3 1/2] mm: compaction: support triggering of proactive compaction by user

From: Vlastimil Babka <hidden>
Date: 2021-06-17 16:18:05
Also in: linux-doc, linux-fsdevel, lkml

On 6/17/21 6:05 PM, Charan Teja Kalla wrote:
The wait_event/freezable_timeout() documentation says that:
 * Returns:
 * 0 if the @condition evaluated to %false after the @timeout elapsed,
			or
 * 1 if the @condition evaluated to %true after the @timeout elapsed,
 * or the remaining jiffies (at least 1) if the @condition evaluated
 * to %true before the @timeout elapsed.

which means the condition must be evaluated to true or timeout should be
elapsed for the function wait_event_freezable_timeout() to return.

Please check the macro implementation of __wait_event, where it will be
in for(;;) till the condition is evaluated to true or timeout happens.
#define __wait_event_freezable_timeout(wq_head, condition, timeout)

        ___wait_event(wq_head, ___wait_cond_timeout(condition),

                      TASK_INTERRUPTIBLE, 0, timeout,

                      __ret = freezable_schedule_timeout(__ret))

Thus the plain wakeup of kcompactd don't do the proactive compact work.
And so we should identify its wakeup for proactive work with a separate
flag.
OK, you're right, I forgot that the macro has the for loop to guard against
spurious wakeups.

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help