On Sun, Mar 13, 2022 at 12:42:58PM +0200, Max Gurtovoy wrote: > > On 3/11/2022 5:28 PM, Suwan Kim wrote: > > This patch supports polling I/O via virtio-blk driver. Polling > > feature is enabled based on "VIRTIO_BLK_F_MQ" feature and the number > > of polling queues can be set by QEMU virtio-blk-pci property > > "num-poll-queues=N". This patch improves the polling I/O throughput > > and latency. > > > > The virtio-blk driver doesn't not have a poll function and a poll > > queue and it has been operating in interrupt driven method even if > > the polling function is called in the upper layer. > > > > virtio-blk polling is implemented upon 'batched completion' of block > > layer. virtblk_poll() queues completed request to io_comp_batch->req_list > > and later, virtblk_complete_batch() calls unmap function and ends > > the requests in batch. > > Maybe we can do the batch in separate commit ? > > For implementing batch in the right way you need to implement .queue_rqs > call back. > > See NVMe PCI driver implementation. > > If we're here, I would really like to see an implementation of > blk_mq_ops.timeout callback in virtio-blk. > > I think it will take this driver to the next level. Thanks for the feedback. I will implement .queue_rqs for virtio-blk and make a seperate commit. Later, I will try to implement blk_mq_ops.timeout as you mentioned. I will send the patch series soon as below. [1] support .queue_rqs for batch submission [2] support polling I/O Regards, Suwan Kim