block: vhd: impl PhysicalSize for FixedVhdDiskAsync

Fix .unwrap() bug: use explicit GetFileMetadata match.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
This commit is contained in:
Anatol Belski
2026-03-24 17:05:38 +01:00
committed by Bo Chen
parent d82b1101d9
commit 42af5913d9

View File

@@ -10,7 +10,7 @@ use vmm_sys_util::eventfd::EventFd;
use crate::async_io::{
AsyncIo, AsyncIoError, AsyncIoResult, BorrowedDiskFd, DiskFile, DiskFileError, DiskFileResult,
};
use crate::error::{BlockError, BlockResult, ErrorOp};
use crate::error::{BlockError, BlockErrorKind, BlockResult, ErrorOp};
use crate::fixed_vhd::FixedVhd;
use crate::raw_async::RawFileAsync;
use crate::{BatchRequest, BlockBackend, disk_file};
@@ -57,6 +57,17 @@ impl disk_file::DiskSize for FixedVhdDiskAsync {
}
}
impl disk_file::PhysicalSize for FixedVhdDiskAsync {
fn physical_size(&self) -> BlockResult<u64> {
self.0.physical_size().map_err(|e| match e {
crate::Error::GetFileMetadata(io) => {
BlockError::new(BlockErrorKind::Io, crate::Error::GetFileMetadata(io))
}
_ => BlockError::new(BlockErrorKind::Io, e),
})
}
}
pub struct FixedVhdAsync {
raw_file_async: RawFileAsync,
size: u64,