diff --git a/block/src/qcow_disk.rs b/block/src/qcow_disk.rs index eb9dff600..798c354d5 100644 --- a/block/src/qcow_disk.rs +++ b/block/src/qcow_disk.rs @@ -192,7 +192,8 @@ mod unit_tests { use vmm_sys_util::tempfile::TempFile; use super::*; - use crate::disk_file::DiskSize; + use crate::async_io::AsyncIo; + use crate::disk_file::{AsyncDiskFile, DiskSize}; use crate::qcow::{QcowFile, RawFile}; const TEST_SIZE: u64 = 0x5566_7788; @@ -212,4 +213,28 @@ mod unit_tests { let disk = QcowDisk::new(file, false, false, true, false).unwrap(); assert_eq!(disk.logical_size().unwrap(), TEST_SIZE); } + + fn assert_async_io_from_dyn(disk: &dyn AsyncDiskFile, expect_batch: bool) { + let io: Box = disk.create_async_io(128).unwrap(); + assert_eq!(io.batch_requests_enabled(), expect_batch); + } + + fn assert_async_io(disk: &QcowDisk, expect_batch: bool) { + assert_async_io_from_dyn(disk, expect_batch); + } + + #[test] + fn sync_backend_disables_batch_requests() { + let file = make_qcow_file(); + let disk = QcowDisk::new(file, false, false, true, false).unwrap(); + assert_async_io(&disk, false); + } + + #[cfg(feature = "io_uring")] + #[test] + fn io_uring_backend_enables_batch_requests() { + let file = make_qcow_file(); + let disk = QcowDisk::new(file, false, false, true, true).unwrap(); + assert_async_io(&disk, true); + } }