From fca54cb14294f8961dfe6f9582c1e6fd3d3603bc Mon Sep 17 00:00:00 2001 From: Muminul Islam Date: Fri, 27 Mar 2026 23:48:02 -0700 Subject: [PATCH] block: Implement DiskSize trait for RawFileDiskAio Add disk_file::DiskSize trait implementation for RawFileDiskAio using BlockError and BlockResult. Takes &self instead of &mut self. Add BlockError, BlockErrorKind, BlockResult, and disk_file imports needed by this and subsequent trait impls. Signed-off-by: Muminul Islam --- block/src/raw_async_aio.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/block/src/raw_async_aio.rs b/block/src/raw_async_aio.rs index 790525a00..c2da2ccd1 100644 --- a/block/src/raw_async_aio.rs +++ b/block/src/raw_async_aio.rs @@ -17,7 +17,8 @@ use vmm_sys_util::eventfd::EventFd; use crate::async_io::{ AsyncIo, AsyncIoError, AsyncIoResult, BorrowedDiskFd, DiskFile, DiskFileError, DiskFileResult, }; -use crate::{DiskTopology, SECTOR_SIZE, probe_sparse_support, query_device_size}; +use crate::error::{BlockError, BlockErrorKind, BlockResult}; +use crate::{DiskTopology, SECTOR_SIZE, disk_file, probe_sparse_support, query_device_size}; #[derive(Debug)] pub struct RawFileDiskAio { @@ -69,6 +70,14 @@ impl DiskFile for RawFileDiskAio { } } +impl disk_file::DiskSize for RawFileDiskAio { + fn logical_size(&self) -> BlockResult { + query_device_size(&self.file) + .map(|(logical_size, _)| logical_size) + .map_err(|e| BlockError::new(BlockErrorKind::Io, DiskFileError::Size(e))) + } +} + pub struct RawFileAsyncAio { fd: RawFd, ctx: aio::IoContext,