Skip to content

Commit fca54cb

Browse files
russell-islamliuw
authored andcommitted
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 <muislam@microsoft.com>
1 parent 98dbe6d commit fca54cb

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

block/src/raw_async_aio.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ use vmm_sys_util::eventfd::EventFd;
1717
use crate::async_io::{
1818
AsyncIo, AsyncIoError, AsyncIoResult, BorrowedDiskFd, DiskFile, DiskFileError, DiskFileResult,
1919
};
20-
use crate::{DiskTopology, SECTOR_SIZE, probe_sparse_support, query_device_size};
20+
use crate::error::{BlockError, BlockErrorKind, BlockResult};
21+
use crate::{DiskTopology, SECTOR_SIZE, disk_file, probe_sparse_support, query_device_size};
2122

2223
#[derive(Debug)]
2324
pub struct RawFileDiskAio {
@@ -69,6 +70,14 @@ impl DiskFile for RawFileDiskAio {
6970
}
7071
}
7172

73+
impl disk_file::DiskSize for RawFileDiskAio {
74+
fn logical_size(&self) -> BlockResult<u64> {
75+
query_device_size(&self.file)
76+
.map(|(logical_size, _)| logical_size)
77+
.map_err(|e| BlockError::new(BlockErrorKind::Io, DiskFileError::Size(e)))
78+
}
79+
}
80+
7281
pub struct RawFileAsyncAio {
7382
fd: RawFd,
7483
ctx: aio::IoContext,

0 commit comments

Comments
 (0)