aboutsummaryrefslogtreecommitdiff
path: root/include/hw/virtio/virtio-blk.h
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2016-02-14 18:17:08 +0100
committerMichael S. Tsirkin <mst@redhat.com>2016-02-25 13:14:18 +0200
commit2906cddfecff21af20eedab43288b485a679f9ac (patch)
tree77c518c7561330bbb3716f15dc46003ce33ff960 /include/hw/virtio/virtio-blk.h
parentadb3feda8daeacb63d14b086ef60ccf963699096 (diff)
downloadqemu-2906cddfecff21af20eedab43288b485a679f9ac.zip
qemu-2906cddfecff21af20eedab43288b485a679f9ac.tar.gz
qemu-2906cddfecff21af20eedab43288b485a679f9ac.tar.bz2
virtio-blk: fix "disabled data plane" mode
In disabled mode, virtio-blk dataplane seems to be enabled, but flow actually goes through the normal virtio path. This patch simplifies a bit the handling of disabled mode. In disabled mode, virtio_blk_handle_output might be called even if s->dataplane is not NULL. This is a bit tricky, because the current check for s->dataplane will always trigger, causing a continuous stream of calls to virtio_blk_data_plane_start. Unfortunately, these calls will not do anything. To fix this, set the "started" flag even in disabled mode, and skip virtio_blk_data_plane_start if the started flag is true. The resulting changes also prepare the code for the next patch, were virtio-blk dataplane will reuse the same virtio_blk_handle_output function as "regular" virtio-blk. Because struct VirtIOBlockDataPlane is opaque in virtio-blk.c, we have to move s->dataplane->started inside struct VirtIOBlock. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Reviewed-by: Fam Zheng <famz@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'include/hw/virtio/virtio-blk.h')
-rw-r--r--include/hw/virtio/virtio-blk.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/hw/virtio/virtio-blk.h b/include/hw/virtio/virtio-blk.h
index 199bb0e..781969d 100644
--- a/include/hw/virtio/virtio-blk.h
+++ b/include/hw/virtio/virtio-blk.h
@@ -56,6 +56,7 @@ typedef struct VirtIOBlock {
/* Function to push to vq and notify guest */
void (*complete_request)(struct VirtIOBlockReq *req, unsigned char status);
Notifier migration_state_notifier;
+ bool dataplane_started;
struct VirtIOBlockDataPlane *dataplane;
} VirtIOBlock;