runtime-rs: Support AIO for hotplugging block device within qemu

In this commit, block device aio are introduced within hotplug_block_device
within qemu via qmp and the "iouring" is set the default.

Signed-off-by: alex.lyn <alex.lyn@antgroup.com>
This commit is contained in:
alex.lyn
2025-07-23 17:44:23 +08:00
parent b4d276bc2b
commit 4521cae0c0
2 changed files with 8 additions and 2 deletions

View File

@@ -637,6 +637,7 @@ impl QemuInner {
&self.config.blockdev_info.block_device_driver,
&block_device.device_id,
&block_device.config.path_on_host,
&block_device.config.blkdev_aio.to_string(),
block_device.config.is_direct,
block_device.config.is_readonly,
block_device.config.no_drop,

View File

@@ -13,10 +13,11 @@ use std::fmt::{Debug, Error, Formatter};
use std::io::BufReader;
use std::os::fd::{AsRawFd, RawFd};
use std::os::unix::net::UnixStream;
use std::str::FromStr;
use std::time::Duration;
use qapi::qmp;
use qapi_qmp::{self, PciDeviceInfo};
use qapi_qmp::{self, BlockdevAioOptions, PciDeviceInfo};
use qapi_spec::Dictionary;
/// default qmp connection read timeout
@@ -514,11 +515,13 @@ impl Qmp {
/// "bus": "pcie.1"
/// }
/// }
#[allow(clippy::too_many_arguments)]
pub fn hotplug_block_device(
&mut self,
block_driver: &str,
device_id: &str,
path_on_host: &str,
blkdev_aio: &str,
is_direct: Option<bool>,
is_readonly: bool,
no_drop: bool,
@@ -546,7 +549,9 @@ impl Qmp {
};
let create_backend_options = || qapi_qmp::BlockdevOptionsFile {
aio: None,
aio: Some(
BlockdevAioOptions::from_str(blkdev_aio).unwrap_or(BlockdevAioOptions::io_uring),
),
aio_max_batch: None,
drop_cache: if !no_drop { None } else { Some(no_drop) },
locking: None,