From 064720221590e0a94a68ef4bab78d8ddc3055feb Mon Sep 17 00:00:00 2001 From: Muminul Islam Date: Tue, 24 Mar 2026 17:24:02 -0700 Subject: [PATCH] block: Implement DiskSize trait for RawFileDisk Add disk_file::DiskSize trait implementation for RawFileDisk using BlockError and BlockResult. Uses metadata().len() instead of seek(SeekFrom::End(0)), taking &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.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/block/src/raw_async.rs b/block/src/raw_async.rs index b5ae8f50a..7dcda5bbd 100644 --- a/block/src/raw_async.rs +++ b/block/src/raw_async.rs @@ -14,8 +14,10 @@ use vmm_sys_util::eventfd::EventFd; use crate::async_io::{ AsyncIo, AsyncIoError, AsyncIoResult, BorrowedDiskFd, DiskFile, DiskFileError, DiskFileResult, }; +use crate::error::{BlockError, BlockErrorKind, BlockResult}; use crate::{ - BatchRequest, DiskTopology, RequestType, SECTOR_SIZE, probe_sparse_support, query_device_size, + BatchRequest, DiskTopology, RequestType, SECTOR_SIZE, disk_file, probe_sparse_support, + query_device_size, }; #[derive(Debug)] @@ -72,6 +74,14 @@ impl DiskFile for RawFileDisk { } } +impl disk_file::DiskSize for RawFileDisk { + 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 RawFileAsync { fd: RawFd, io_uring: IoUring,