diff --git a/block/src/raw_sync.rs b/block/src/raw_sync.rs index 0051c1b67..23f2d10e5 100644 --- a/block/src/raw_sync.rs +++ b/block/src/raw_sync.rs @@ -13,7 +13,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 RawFileDiskSync { @@ -64,6 +65,14 @@ impl DiskFile for RawFileDiskSync { } } +impl disk_file::DiskSize for RawFileDiskSync { + 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 RawFileSync { fd: RawFd, eventfd: EventFd,