mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-25 17:08:36 -07:00
libblkio (https://gitlab.com/libblkio/libblkio/) is a library for high-performance disk I/O. It currently supports io_uring, virtio-blk-vhost-user, and virtio-blk-vhost-vdpa with additional drivers under development. One of the reasons for developing libblkio is that other applications besides QEMU can use it. This will be particularly useful for virtio-blk-vhost-user which applications may wish to use for connecting to qemu-storage-daemon. libblkio also gives us an opportunity to develop in Rust behind a C API that is easy to consume from QEMU. This commit adds io_uring, nvme-io_uring, virtio-blk-vhost-user, and virtio-blk-vhost-vdpa BlockDrivers to QEMU using libblkio. It will be easy to add other libblkio drivers since they will share the majority of code. For now I/O buffers are copied through bounce buffers if the libblkio driver requires it. Later commits add an optimization for pre-registering guest RAM to avoid bounce buffers. The syntax is: --blockdev io_uring,node-name=drive0,filename=test.img,readonly=on|off,cache.direct=on|off --blockdev nvme-io_uring,node-name=drive0,filename=/dev/ng0n1,readonly=on|off,cache.direct=on --blockdev virtio-blk-vhost-vdpa,node-name=drive0,path=/dev/vdpa...,readonly=on|off,cache.direct=on --blockdev virtio-blk-vhost-user,node-name=drive0,path=vhost-user-blk.sock,readonly=on|off,cache.direct=on Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Acked-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Message-id: 20221013185908.1297568-3-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> |
||
|---|---|---|
| .. | ||
| acpi.json | ||
| audio.json | ||
| authz.json | ||
| block-core.json | ||
| block-export.json | ||
| block.json | ||
| char.json | ||
| common.json | ||
| compat.json | ||
| control.json | ||
| crypto.json | ||
| dump.json | ||
| error.json | ||
| introspect.json | ||
| job.json | ||
| machine-target.json | ||
| machine.json | ||
| meson.build | ||
| migration.json | ||
| misc-target.json | ||
| misc.json | ||
| net.json | ||
| opts-visitor.c | ||
| pci.json | ||
| pragma.json | ||
| qapi-clone-visitor.c | ||
| qapi-dealloc-visitor.c | ||
| qapi-forward-visitor.c | ||
| qapi-schema.json | ||
| qapi-type-helpers.c | ||
| qapi-util.c | ||
| qapi-visit-core.c | ||
| qdev.json | ||
| qmp-dispatch.c | ||
| qmp-event.c | ||
| qmp-registry.c | ||
| qobject-input-visitor.c | ||
| qobject-output-visitor.c | ||
| qom.json | ||
| rdma.json | ||
| replay.json | ||
| rocker.json | ||
| run-state.json | ||
| sockets.json | ||
| stats.json | ||
| string-input-visitor.c | ||
| string-output-visitor.c | ||
| tpm.json | ||
| trace-events | ||
| trace.h | ||
| trace.json | ||
| transaction.json | ||
| ui.json | ||
| virtio.json | ||
| yank.json | ||