direct-io: only use block polling if explicitly requested

Signed-off-by: Christoph Hellwig <[email protected]>
Reviewed-by: Stephen Bates <[email protected]>
Tested-by: Stephen Bates <[email protected]>
Acked-by: Jeff Moyer <[email protected]>
Signed-off-by: Al Viro <[email protected]>
This commit is contained in:
Christoph Hellwig 2016-03-03 16:04:02 +01:00 • committed by Al Viro
commit c43c83a294

View file

@ -445,7 +445,8 @@ static struct bio *dio_await_one(struct dio *dio)
__set_current_state(TASK_UNINTERRUPTIBLE);
dio->waiter = current;
spin_unlock_irqrestore(&dio->bio_lock, flags);
if (!blk_poll(bdev_get_queue(dio->bio_bdev), dio->bio_cookie))
if (!(dio->iocb->ki_flags & IOCB_HIPRI) ||
!blk_poll(bdev_get_queue(dio->bio_bdev), dio->bio_cookie))
io_schedule();
/* wake up sets us TASK_RUNNING */
spin_lock_irqsave(&dio->bio_lock, flags);