coalescing in polling mode in 4.9

Keith Busch keith.busch at intel.com
Tue Feb 6 08:29:04 PST 2018


On Mon, Feb 05, 2018 at 09:12:12PM +0530, Nitesh wrote:
> diff --git a/fs/block_dev.c b/fs/block_dev.c
> index 4a181fc..d2eeedf 100644
> --- a/fs/block_dev.c
> +++ b/fs/block_dev.c
> @@ -236,9 +236,13 @@ __blkdev_direct_IO_simple(struct kiocb *iocb, struct
> iov_iter *iter,
>                 set_current_state(TASK_UNINTERRUPTIBLE);
>                 if (!READ_ONCE(bio.bi_private))
>                         break;
> -               if (!(iocb->ki_flags & IOCB_HIPRI) ||
> -                   !blk_poll(bdev_get_queue(bdev), qc))
> +               if (!(iocb->ki_flags & IOCB_HIPRI))
>                         io_schedule();
> +               else if (!blk_poll(bdev_get_queue(bdev), qc)) {
> +                       if(need_resched())
> +                               set_current_state(TASK_RUNNING);
> +                       io_schedule();
> +               }
>         }
>         __set_current_state(TASK_RUNNING);

Yah, I think this looks good. Do you want to send this as a proper patch
to linux-block mailing list for consideration?



More information about the Linux-nvme mailing list