• P
    virtio-blk: fix "disabled data plane" mode · 2906cddf
    Paolo Bonzini 提交于
    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: NPaolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
    Reviewed-by: NCornelia Huck <cornelia.huck@de.ibm.com>
    Reviewed-by: NFam Zheng <famz@redhat.com>
    Acked-by: NStefan Hajnoczi <stefanha@redhat.com>
    2906cddf
virtio-blk.c 11.4 KB