Add polling support for uring_cmd polling support for virtblk, which will be called during completion-polling. Signed-off-by: Ferry Meng <mengferry@xxxxxxxxxxxxxxxxx> --- drivers/block/virtio_blk.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index cd88cf939144..cd4c74e06107 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c @@ -1464,6 +1464,18 @@ static int virtblk_chr_uring_cmd(struct io_uring_cmd *ioucmd, unsigned int issue return virtblk_uring_cmd(vblk, ioucmd, issue_flags); } +static int virtblk_chr_uring_cmd_iopoll(struct io_uring_cmd *ioucmd, + struct io_comp_batch *iob, + unsigned int poll_flags) +{ + struct virtblk_uring_cmd_pdu *pdu = virtblk_get_uring_cmd_pdu(ioucmd); + struct request *req = pdu->req; + + if (req && blk_rq_is_poll(req)) + return blk_rq_poll(req, iob, poll_flags); + return 0; +} + static void virtblk_cdev_rel(struct device *dev) { ida_free(&vd_chr_minor_ida, MINOR(dev->devt)); @@ -1512,6 +1524,7 @@ static int virtblk_cdev_add(struct virtio_blk *vblk, static const struct file_operations virtblk_chr_fops = { .owner = THIS_MODULE, .uring_cmd = virtblk_chr_uring_cmd, + .uring_cmd_iopoll = virtblk_chr_uring_cmd_iopoll, }; static unsigned int virtblk_queue_depth; -- 2.43.5