From abef0e5b69290eddc6167cee8d2aca90a9b7b379 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 23 Apr 2026 21:22:32 +0200 Subject: [PATCH] block: qcow: Add physical size test Verify that a freshly created sparse QCOW2 image reports a physical size smaller than its logical size. Assisted-by: Claude:Opus-4.6 Signed-off-by: Anatol Belski --- block/src/qcow_disk.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/block/src/qcow_disk.rs b/block/src/qcow_disk.rs index 0ccad1e32..ef2730526 100644 --- a/block/src/qcow_disk.rs +++ b/block/src/qcow_disk.rs @@ -193,7 +193,7 @@ mod unit_tests { use super::*; use crate::async_io::AsyncIo; - use crate::disk_file::{AsyncDiskFile, DiskSize}; + use crate::disk_file::{AsyncDiskFile, DiskSize, PhysicalSize}; use crate::qcow::{QcowFile, RawFile}; const TEST_SIZE: u64 = 0x5566_7788; @@ -254,4 +254,13 @@ mod unit_tests { let cloned = disk.try_clone().unwrap(); assert_async_io_from_dyn(cloned.as_ref(), true); } + + #[test] + fn physical_size_less_than_logical() { + // make_qcow_file() writes no guest data, so the file on disk + // only contains QCOW2 headers and metadata tables. + let file = make_qcow_file(); + let disk = QcowDisk::new(file, false, false, true, false).unwrap(); + assert!(disk.physical_size().unwrap() < disk.logical_size().unwrap()); + } }