next_waiter
VDO_ASSERT_LOG_ONLY((page_completion->waiter.next_waiter == NULL),
VDO_ASSERT_LOG_ONLY((page_completion->waiter.next_waiter == NULL),
for (waiter = first->next_waiter; waiter != first; waiter = waiter->next_waiter) {
if (data_vio->waiter.next_waiter != NULL)
return last_waiter->next_waiter;
last_waiter->next_waiter = first_waiter->next_waiter;
first_waiter->next_waiter = NULL;
BUG_ON(waiter->next_waiter != NULL);
waiter->next_waiter = waiter;
waiter->next_waiter = waitq->last_waiter->next_waiter;
waitq->last_waiter->next_waiter = waiter;
struct vdo_waiter *from_head = from_waitq->last_waiter->next_waiter;
struct vdo_waiter *to_head = to_waitq->last_waiter->next_waiter;
to_waitq->last_waiter->next_waiter = from_head;
from_waitq->last_waiter->next_waiter = to_head;
struct vdo_waiter *next_waiter;
return (waiter->next_waiter != NULL);
next = next_waiter(sem, waiter);