Commit ca136b25 authored by Remi Pommarel's avatar Remi Pommarel Committed by Dominique Martinet
Browse files

wait: Introduce io_wait_event_killable()



Add io_wait_event_killable(), a variant of wait_event_killable() that
uses io_schedule() instead of schedule(). This is to be used in
situation where waiting time is to be accounted as IO wait time.

Signed-off-by: default avatarRemi Pommarel <repk@triplefau.lt>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Message-ID: <1b2870001ecd34fe6c05be2ddfefb3c798b11701.1769179462.git.repk@triplefau.lt>
Signed-off-by: default avatarDominique Martinet <asmadeus@codewreck.org>
parent 63804fed
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -937,6 +937,21 @@ extern int do_wait_intr_irq(wait_queue_head_t *, wait_queue_entry_t *);
	__ret;									\
})

#define __io_wait_event_killable(wq, condition)					\
	___wait_event(wq, condition, TASK_KILLABLE, 0, 0, io_schedule())

/*
 * wait_event_killable() - link wait_event_killable but with io_schedule()
 */
#define io_wait_event_killable(wq_head, condition)				\
({										\
	int __ret = 0;								\
	might_sleep();								\
	if (!(condition))							\
		__ret = __io_wait_event_killable(wq_head, condition);		\
	__ret;									\
})

#define __wait_event_state(wq, condition, state)				\
	___wait_event(wq, condition, state, 0, 0, schedule())