e72f66a0a2
virtio-blk-data-plane is a subset implementation of virtio-blk. It only handles read, write, and flush requests. It does this using a dedicated thread that executes an epoll(2)-based event loop and processes I/O using Linux AIO. This approach performs very well but can be used for raw image files only. The number of IOPS achieved has been reported to be several times higher than the existing virtio-blk implementation. Eventually it should be possible to unify virtio-blk-data-plane with the main body of QEMU code once the block layer and hardware emulation is able to run outside the global mutex. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
30 lines
909 B
C
30 lines
909 B
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.h"
|
|
|
|
typedef struct VirtIOBlockDataPlane VirtIOBlockDataPlane;
|
|
|
|
bool virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
|
|
VirtIOBlockDataPlane **dataplane);
|
|
void virtio_blk_data_plane_destroy(VirtIOBlockDataPlane *s);
|
|
void virtio_blk_data_plane_start(VirtIOBlockDataPlane *s);
|
|
void virtio_blk_data_plane_stop(VirtIOBlockDataPlane *s);
|
|
void virtio_blk_data_plane_drain(VirtIOBlockDataPlane *s);
|
|
|
|
#endif /* HW_DATAPLANE_VIRTIO_BLK_H */
|