/* Retry logic exist outside these macros to protect from spurrious wakeups.  */
static void TXN_SLEEP_DROP_LOCK(wait_queue_head_t *event)
/* Retry logic exist outside these macros to protect from spurrious wakeups.  */
static void TXN_SLEEP_DROP_LOCK(wait_queue_head_t *event)
{
	DECLARE_WAITQUEUE(wait, current);
	add_wait_queue(event, &wait);
	set_current_state(TASK_UNINTERRUPTIBLE);
	TXN_UNLOCK();
	io_schedule();
	__set_current_state(TASK_RUNNING);
	remove_wait_queue(event, &wait);
}