virtio-blk: fix "disabled data plane" mode
commit2906cddfecff21af20eedab43288b485a679f9ac
authorPaolo Bonzini <pbonzini@redhat.com>
Sun, 14 Feb 2016 17:17:08 +0000 (14 18:17 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Thu, 25 Feb 2016 11:14:18 +0000 (25 13:14 +0200)
tree77c518c7561330bbb3716f15dc46003ce33ff960
parentadb3feda8daeacb63d14b086ef60ccf963699096
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>
hw/block/dataplane/virtio-blk.c
hw/block/virtio-blk.c
include/hw/virtio/virtio-blk.h