qemu/hw/block
Paolo Bonzini 2906cddfec 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>
2016-02-25 13:14:18 +02:00
..
dataplane virtio-blk: fix "disabled data plane" mode 2016-02-25 13:14:18 +02:00
block.c block: Clean up includes 2016-01-20 13:36:23 +01:00
cdrom.c block: Clean up includes 2016-01-20 13:36:23 +01:00
ecc.c block: Clean up includes 2016-01-20 13:36:23 +01:00
fdc.c fdc: always compile-check debug prints 2016-02-10 13:29:40 -05:00
hd-geometry.c block: Clean up includes 2016-01-20 13:36:23 +01:00
m25p80.c ssi: Move ssi.h into a separate directory 2016-01-21 14:15:03 +00:00
Makefile.objs block: Always compile virtio-blk dataplane 2014-09-22 11:39:51 +01:00
nand.c hw/block/nand.c: Include osdep.h first 2016-02-16 14:29:26 +00:00
nvme.c nvme: generate OpenFirmware device path in the "bootorder" fw_cfg file 2016-02-02 12:45:01 +01:00
nvme.h nvme: implement the Flush command 2015-07-14 15:55:19 +02:00
onenand.c block: Clean up includes 2016-01-20 13:36:23 +01:00
pflash_cfi01.c block: Clean up includes 2016-01-20 13:36:23 +01:00
pflash_cfi02.c block: Clean up includes 2016-01-20 13:36:23 +01:00
tc58128.c block: Clean up includes 2016-01-20 13:36:23 +01:00
virtio-blk.c virtio-blk: fix "disabled data plane" mode 2016-02-25 13:14:18 +02:00
xen_blkif.h xen/blkif: Avoid double access to src->nr_segments 2015-12-18 15:09:58 +00:00
xen_disk.c xen: Switch to libxengnttab interface for compat shims. 2016-01-26 17:19:28 +00:00