Message ID | 20220405150924.147021-1-suwan.kim027@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | virtio-blk: support polling I/O and mq_ops->queue_rqs() | expand |
On Wed, Apr 06, 2022 at 12:09:22AM +0900, Suwan Kim wrote: > This patch serise adds support for polling I/O and mq_ops->queue_rqs() > to virtio-blk driver. > > Changes > > v4 -> v5 > - patch1 : virtblk_poll > - Replace "req_done" with "found" in virtblk_poll() > - Split for loop into two distinct for loop in init_vq() > that sets callback function for each default/poll queues > - Replace "if (i == HCTX_TYPE_DEFAULT)" with "i != HCTX_TYPE_POLL" > in virtblk_map_queues() > - Replace "virtblk_unmap_data(req, vbr);" with > "virtblk_unmap_data(req, blk_mq_rq_to_pdu(req);" > in virtblk_complete_batch() > > - patch2 : virtio_queue_rqs > - Instead of using vbr.sg_num field, use vbr->sg_table.nents. > So, remove sg_num field in struct virtblk_req > - Drop the unnecessary argument of virtblk_add_req() because it > doens't need "data_sg" and "have_data". It can be derived from "vbr" > argument. > - Add Reviewed-by tag from Stefan > > v3 -> v4 > - patch1 : virtblk_poll > - Add print the number of default/read/poll queues in init_vq() > - Add blk_mq_start_stopped_hw_queues() to virtblk_poll() > virtblk_poll() > ... > if (req_done) > blk_mq_start_stopped_hw_queues(vblk->disk->queue, true); > ... > > - patch2 : virtio_queue_rqs > - Modify virtio_queue_rqs() to hold lock only once when it adds > requests to virtqueue just before virtqueue notify. > It will guarantee that virtio_queue_rqs() will not use > previous req again. > > v2 -> v3 > - Fix warning by kernel test robot > > static int virtblk_poll() > ... > if (!blk_mq_add_to_batch(req, iob, virtblk_result(vbr), > -> vbr->status, > > v1 -> v2 > - To receive the number of poll queues from user, > use module parameter instead of QEMU uapi change. > > - Add the comment about virtblk_map_queues(). > > - Add support for mq_ops->queue_rqs() to implement submit side > batch. > > Suwan Kim (2): > virtio-blk: support polling I/O > virtio-blk: support mq_ops->queue_rqs() > > drivers/block/virtio_blk.c | 229 +++++++++++++++++++++++++++++++++---- > 1 file changed, 206 insertions(+), 23 deletions(-) > > -- > 2.26.3 > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>