b6948ab01d
Add the iothread-vq-mapping parameter to assign virtqueues to IOThreads. Store the vq:AioContext mapping in the new struct VirtIOBlockDataPlane->vq_aio_context[] field and refactor the code to use the per-vq AioContext instead of the BlockDriverState's AioContext. Reimplement --device virtio-blk-pci,iothread= and non-IOThread mode by assigning all virtqueues to the IOThread and main loop's AioContext in vq_aio_context[], respectively. The comment in struct VirtIOBlockDataPlane about EventNotifiers is stale. Remove it. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-ID: <20231220134755.814917-5-stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
35 lines
1.1 KiB
C
35 lines
1.1 KiB
C
/*
|
|
* Dedicated thread for virtio-blk I/O processing
|
|
*
|
|
* Copyright 2012 IBM, Corp.
|
|
* Copyright 2012 Red Hat, Inc. and/or its affiliates
|
|
*
|
|
* Authors:
|
|
* Stefan Hajnoczi <stefanha@redhat.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
#ifndef HW_DATAPLANE_VIRTIO_BLK_H
|
|
#define HW_DATAPLANE_VIRTIO_BLK_H
|
|
|
|
#include "hw/virtio/virtio.h"
|
|
|
|
typedef struct VirtIOBlockDataPlane VirtIOBlockDataPlane;
|
|
|
|
bool virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
|
VirtIOBlockDataPlane **dataplane,
|
|
Error **errp);
|
|
void virtio_blk_data_plane_destroy(VirtIOBlockDataPlane *s);
|
|
void virtio_blk_data_plane_notify(VirtIOBlockDataPlane *s, VirtQueue *vq);
|
|
|
|
int virtio_blk_data_plane_start(VirtIODevice *vdev);
|
|
void virtio_blk_data_plane_stop(VirtIODevice *vdev);
|
|
|
|
void virtio_blk_data_plane_detach(VirtIOBlockDataPlane *s);
|
|
void virtio_blk_data_plane_attach(VirtIOBlockDataPlane *s);
|
|
|
|
#endif /* HW_DATAPLANE_VIRTIO_BLK_H */
|