Simplify raw disks definition
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-05-30 11:15:21 +02:00
parent a3ac56f849
commit 794d16bdaa
4 changed files with 19 additions and 34 deletions

View File

@ -13,20 +13,13 @@ enum VMDisksError {
Config(&'static str),
}
/// Type of disk allocation
#[derive(Copy, Clone, Debug, serde::Serialize, serde::Deserialize, Eq, PartialEq)]
pub enum VMDiskAllocType {
Fixed,
Sparse,
}
/// Disk allocation type
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(tag = "format")]
pub enum VMDiskFormat {
Raw {
/// Type of disk allocation
alloc_type: VMDiskAllocType,
/// Is raw file a sparse file?
is_sparse: bool,
},
QCow2,
}
@ -61,12 +54,7 @@ impl VMFileDisk {
},
format: match info.format {
DiskFileFormat::Raw { is_sparse } => VMDiskFormat::Raw {
alloc_type: match is_sparse {
true => VMDiskAllocType::Sparse,
false => VMDiskAllocType::Fixed,
},
},
DiskFileFormat::Raw { is_sparse } => VMDiskFormat::Raw { is_sparse },
DiskFileFormat::QCow2 { .. } => VMDiskFormat::QCow2,
_ => anyhow::bail!("Unsupported image format: {:?}", info.format),
},
@ -131,9 +119,7 @@ impl VMFileDisk {
DiskFileInfo::create(
&file,
match self.format {
VMDiskFormat::Raw { alloc_type } => DiskFileFormat::Raw {
is_sparse: alloc_type == VMDiskAllocType::Sparse,
},
VMDiskFormat::Raw { is_sparse } => DiskFileFormat::Raw { is_sparse },
VMDiskFormat::QCow2 => DiskFileFormat::QCow2 {
virtual_size: self.size,
},