tests: windows: Disable sparse for DM snapshot OS disks

The Windows tests use a DM snapshot device for the OS disk.
DM snapshot targets do not support BLKDISCARD, so the VMM returns
IOERR for every TRIM attempt. viostor.sys may BSOD when the host
returns an error for negotiated discard/write-zeroes operations.

Add a default_disks_sparse_off() helper to GuestCommand and use it
in all Windows tests.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
This commit is contained in:
Anatol Belski
2026-02-25 15:18:43 +01:00
committed by Rob Bradford
parent 8a165aef3b
commit e067c76880
2 changed files with 30 additions and 34 deletions

View File

@@ -11537,7 +11537,7 @@ mod windows {
.args(["--kernel", edk2_path().to_str().unwrap()])
.args(["--serial", "tty"])
.args(["--console", "off"])
.default_disks()
.default_disks_sparse_off()
.default_net()
.capture_output()
.spawn()
@@ -11586,7 +11586,7 @@ mod windows {
.args([
"--disk",
format!(
"path={},num_queues=4",
"path={},num_queues=4,sparse=off",
windows_guest
.guest()
.disk_config
@@ -11654,7 +11654,7 @@ mod windows {
.args(["--kernel", ovmf_path.to_str().unwrap()])
.args(["--serial", "tty"])
.args(["--console", "off"])
.default_disks()
.default_disks_sparse_off()
.default_net()
.capture_output()
.spawn()
@@ -11743,7 +11743,7 @@ mod windows {
.args(["--kernel", ovmf_path.to_str().unwrap()])
.args(["--serial", "tty"])
.args(["--console", "off"])
.default_disks()
.default_disks_sparse_off()
.default_net()
.capture_output()
.spawn()
@@ -11818,7 +11818,7 @@ mod windows {
.args(["--kernel", ovmf_path.to_str().unwrap()])
.args(["--serial", "tty"])
.args(["--console", "off"])
.default_disks()
.default_disks_sparse_off()
.default_net()
.capture_output()
.spawn()
@@ -11892,7 +11892,7 @@ mod windows {
.args(["--kernel", ovmf_path.to_str().unwrap()])
.args(["--serial", "tty"])
.args(["--console", "off"])
.default_disks()
.default_disks_sparse_off()
.default_net()
.capture_output()
.spawn()
@@ -11966,7 +11966,7 @@ mod windows {
.args(["--kernel", ovmf_path.to_str().unwrap()])
.args(["--serial", "tty"])
.args(["--console", "off"])
.default_disks()
.default_disks_sparse_off()
.default_net()
.capture_output()
.spawn()
@@ -12062,7 +12062,7 @@ mod windows {
.args(["--kernel", ovmf_path.to_str().unwrap()])
.args(["--serial", "tty"])
.args(["--console", "off"])
.default_disks()
.default_disks_sparse_off()
.default_net()
.capture_output()
.spawn()
@@ -12194,7 +12194,7 @@ mod windows {
.args(["--kernel", ovmf_path.to_str().unwrap()])
.args(["--serial", "tty"])
.args(["--console", "off"])
.default_disks()
.default_disks_sparse_off()
// The multi net dev config is borrowed from test_multiple_network_interfaces
.args([
"--net",

View File

@@ -1448,35 +1448,31 @@ impl<'a> GuestCommand<'a> {
}
pub fn default_disks(&mut self) -> &mut Self {
if self.guest.disk_config.disk(DiskType::CloudInit).is_some() {
self.default_disks_inner(true)
}
pub fn default_disks_sparse_off(&mut self) -> &mut Self {
self.default_disks_inner(false)
}
fn default_disks_inner(&mut self, sparse: bool) -> &mut Self {
let sparse_opt = if sparse { "" } else { ",sparse=off" };
let os_disk = format!(
"path={}{}",
self.guest
.disk_config
.disk(DiskType::OperatingSystem)
.unwrap(),
sparse_opt
);
if let Some(cloud_init) = self.guest.disk_config.disk(DiskType::CloudInit) {
self.args([
"--disk",
format!(
"path={}",
self.guest
.disk_config
.disk(DiskType::OperatingSystem)
.unwrap()
)
.as_str(),
format!(
"path={}",
self.guest.disk_config.disk(DiskType::CloudInit).unwrap()
)
.as_str(),
os_disk.as_str(),
format!("path={cloud_init}").as_str(),
])
} else {
self.args([
"--disk",
format!(
"path={}",
self.guest
.disk_config
.disk(DiskType::OperatingSystem)
.unwrap()
)
.as_str(),
])
self.args(["--disk", os_disk.as_str()])
}
}