From 266c5fc241116d5d196af63470970365937421ca Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 24 Mar 2026 09:14:11 +0100 Subject: [PATCH] block: vhd: impl PhysicalSize for FixedVhdDiskSync Delegate to FixedVhd::physical_size() which calls file.metadata(). Preserve the crate::Error::GetFileMetadata variant as the BlockError source for diagnostic chain traversal. Signed-off-by: Anatol Belski --- block/src/fixed_vhd_sync.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/block/src/fixed_vhd_sync.rs b/block/src/fixed_vhd_sync.rs index 9ea036b90..15624eada 100644 --- a/block/src/fixed_vhd_sync.rs +++ b/block/src/fixed_vhd_sync.rs @@ -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_sync::RawFileSync; use crate::{BlockBackend, disk_file}; @@ -59,6 +59,17 @@ impl disk_file::DiskSize for FixedVhdDiskSync { } } +impl disk_file::PhysicalSize for FixedVhdDiskSync { + fn physical_size(&self) -> BlockResult { + 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 FixedVhdSync { raw_file_sync: RawFileSync, size: u64,