]> git.proxmox.com Git - mirror_qemu.git/commit - hw/block/virtio-blk.c
virtio: Report real progress in VQ aio poll handler
authorFam Zheng <famz@redhat.com>
Thu, 9 Feb 2017 08:40:47 +0000 (16:40 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Fri, 17 Feb 2017 19:52:30 +0000 (21:52 +0200)
commit0793169870f376bc9959b7d81df48ab4a90dcceb
tree706cd7d990534f97bcf1dd9ca8ca09c4e7d350ff
parent4bb571d857d973d9308d9fdb1f48d983d6639bd4
virtio: Report real progress in VQ aio poll handler

In virtio_queue_host_notifier_aio_poll, not all "!virtio_queue_empty()"
cases are making true progress.

Currently the offending one is virtio-scsi event queue, whose handler
does nothing if no event is pending. As a result aio_poll() will spin on
the "non-empty" VQ and take 100% host CPU.

Fix this by reporting actual progress from virtio queue aio handlers.

Reported-by: Ed Swierk <eswierk@skyportsystems.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
Tested-by: Ed Swierk <eswierk@skyportsystems.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/block/dataplane/virtio-blk.c
hw/block/virtio-blk.c
hw/scsi/virtio-scsi-dataplane.c
hw/scsi/virtio-scsi.c
hw/virtio/virtio.c
include/hw/virtio/virtio-blk.h
include/hw/virtio/virtio-scsi.h
include/hw/virtio/virtio.h