From 98c533a501d5eff51bf16bb1a78b043f86450626 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 16 Apr 2026 22:46:38 +0200 Subject: [PATCH] block: qcow: Test O_DIRECT write and read roundtrip Write 128K of patterned data and read it back with O_DIRECT active to verify the aligned I/O paths produce correct results. Signed-off-by: Anatol Belski --- block/src/qcow_async.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/block/src/qcow_async.rs b/block/src/qcow_async.rs index cbcd62042..2794b4235 100644 --- a/block/src/qcow_async.rs +++ b/block/src/qcow_async.rs @@ -1053,4 +1053,22 @@ mod unit_tests { "sub-sector O_DIRECT read should return written data" ); } + + #[test] + fn test_qcow_async_direct_io_write_read_roundtrip() { + let temp_file = TempFile::new().unwrap(); + let disk = match try_create_direct_io_disk(&temp_file, 100 * 1024 * 1024) { + Some(d) => d, + None => { + eprintln!("skipping: O_DIRECT not supported on this filesystem"); + return; + } + }; + + let pattern: Vec = (0..128 * 1024).map(|i| (i % 251) as u8).collect(); + async_write(&disk, 0, &pattern); + + let buf = async_read(&disk, 0, pattern.len()); + assert_eq!(buf, pattern, "O_DIRECT roundtrip should match"); + } }