block: make blk_poll() take a parameter on whether to spin or not
blk_poll() has always kept spinning until it found an IO. This is fine for SYNC polling, since we need to find one request we have pending, but in preparation for ASYNC polling it can be beneficial to just check if we have any entries available or not. Existing callers are converted to pass in 'spin == true', to retain the old behavior. Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
@@ -518,7 +518,7 @@ static struct bio *dio_await_one(struct dio *dio)
|
||||
dio->waiter = current;
|
||||
spin_unlock_irqrestore(&dio->bio_lock, flags);
|
||||
if (!(dio->iocb->ki_flags & IOCB_HIPRI) ||
|
||||
!blk_poll(dio->bio_disk->queue, dio->bio_cookie))
|
||||
!blk_poll(dio->bio_disk->queue, dio->bio_cookie, true))
|
||||
io_schedule();
|
||||
/* wake up sets us TASK_RUNNING */
|
||||
spin_lock_irqsave(&dio->bio_lock, flags);
|
||||
|
Reference in New Issue
Block a user