[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 00/11] rust/block: Add minimal block driver bindings
From: |
Kevin Wolf |
Subject: |
[PATCH v2 00/11] rust/block: Add minimal block driver bindings |
Date: |
Tue, 18 Feb 2025 19:20:08 +0100 |
This series adds minimal bindings for writing block drivers in Rust and
converts the bochs block driver as an example. Some parts (such as the
open functions) are still essentially C written in Rust syntax, while
other parts already try to provide somewhat idiomatic abstractions.
The main purpose of this series is just to add a starting point for
incremental improvements to the bindings; it's clearly not very polished
yet and ignores some important points like enforcing the graph lock.
Therefore, the main focus in the immediate future after this series
should be cleaning up the bochs driver and the bindings it uses rather
than adding more drivers.
Based-on: <20250213143216.3910163-1-pbonzini@redhat.com>
v2:
- Rebased on top of current git master with qemu_api::errno patches
applied
- Changed 'node' in MappingTarget from a dummy () to Arc<BdrvChild>
- Changed BdrvChild::read_uninit() to use Box<MaybeUninit<T>>
- Use libc crate instead of letting bindgen output EINVAL/EIO
- Fixed errno translation logic, in parts by using qemu_api::errno
- Changed two instances of incorrect *foo = ... into foo.write(...)
- Added rust/block/ to MAINTAINERS
- Some style and readability improvements
Kevin Wolf (11):
rust: Build separate qemu_api_tools and qemu_api_system
meson: Add rust_block_ss and link tools with it
rust: Add some block layer bindings
rust/qemu-api: Add wrappers to run futures in QEMU
rust/block: Add empty crate
rust/block: Add I/O buffer traits
block: Add bdrv_open_blockdev_ref_file()
rust/block: Add driver module
rust/block: Add read support for block drivers
bochs-rs: Add bochs block driver reimplementation in Rust
rust/block: Add format probing
include/block/block-global-state.h | 4 +
include/qemu/coroutine-rust.h | 24 +++
rust/wrapper-system.h | 46 +++++
rust/wrapper.h | 16 +-
block.c | 31 ++-
util/qemu-co-rust-async.c | 55 +++++
MAINTAINERS | 1 +
meson.build | 47 ++++-
rust/Cargo.lock | 8 +
rust/Cargo.toml | 1 +
rust/block/Cargo.toml | 16 ++
rust/block/README.md | 3 +
rust/block/meson.build | 20 ++
rust/block/src/bochs.rs | 317 +++++++++++++++++++++++++++++
rust/block/src/driver.rs | 309 ++++++++++++++++++++++++++++
rust/block/src/iobuffer.rs | 94 +++++++++
rust/block/src/lib.rs | 5 +
rust/hw/char/pl011/meson.build | 3 +-
rust/hw/timer/hpet/meson.build | 3 +-
rust/meson.build | 12 +-
rust/qemu-api/Cargo.toml | 1 +
rust/qemu-api/build.rs | 10 +-
rust/qemu-api/meson.build | 80 +++++---
rust/qemu-api/src/bindings.rs | 52 +++--
rust/qemu-api/src/futures.rs | 77 +++++++
rust/qemu-api/src/lib.rs | 6 +
rust/qemu-api/src/prelude.rs | 3 +
rust/qemu-api/src/zeroable.rs | 34 ++--
storage-daemon/meson.build | 2 +-
util/meson.build | 3 +
30 files changed, 1188 insertions(+), 95 deletions(-)
create mode 100644 include/qemu/coroutine-rust.h
create mode 100644 rust/wrapper-system.h
create mode 100644 util/qemu-co-rust-async.c
create mode 100644 rust/block/Cargo.toml
create mode 100644 rust/block/README.md
create mode 100644 rust/block/meson.build
create mode 100644 rust/block/src/bochs.rs
create mode 100644 rust/block/src/driver.rs
create mode 100644 rust/block/src/iobuffer.rs
create mode 100644 rust/block/src/lib.rs
create mode 100644 rust/qemu-api/src/futures.rs
--
2.48.1
- [PATCH v2 00/11] rust/block: Add minimal block driver bindings,
Kevin Wolf <=
- [PATCH v2 02/11] meson: Add rust_block_ss and link tools with it, Kevin Wolf, 2025/02/18
- [PATCH v2 01/11] rust: Build separate qemu_api_tools and qemu_api_system, Kevin Wolf, 2025/02/18
- [PATCH v2 05/11] rust/block: Add empty crate, Kevin Wolf, 2025/02/18
- [PATCH v2 04/11] rust/qemu-api: Add wrappers to run futures in QEMU, Kevin Wolf, 2025/02/18
- [PATCH v2 06/11] rust/block: Add I/O buffer traits, Kevin Wolf, 2025/02/18
- [PATCH v2 08/11] rust/block: Add driver module, Kevin Wolf, 2025/02/18