block: qcow: raw_file: Use query_device_size() for size queries

Use query_device_size() instead of metadata().len() to correctly
handle block device and regular file handles.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
This commit is contained in:
Anatol Belski
2026-03-25 23:21:45 +01:00
committed by Rob Bradford
parent 1b92af5534
commit 8b6eb83f2a

View File

@@ -20,7 +20,7 @@ use vmm_sys_util::file_traits::FileSync;
use vmm_sys_util::seek_hole::SeekHole;
use vmm_sys_util::write_zeroes::{PunchHole, WriteZeroesAt};
use crate::BlockBackend;
use crate::{BlockBackend, query_device_size};
#[derive(Debug)]
pub struct RawFile {
@@ -374,11 +374,15 @@ impl SeekHole for RawFile {
impl BlockBackend for RawFile {
fn logical_size(&self) -> std::result::Result<u64, crate::Error> {
Ok(self.metadata().map_err(crate::Error::RawFileError)?.len())
Ok(query_device_size(&self.file)
.map_err(crate::Error::RawFileError)?
.0)
}
fn physical_size(&self) -> std::result::Result<u64, crate::Error> {
Ok(self.metadata().map_err(crate::Error::RawFileError)?.len())
Ok(query_device_size(&self.file)
.map_err(crate::Error::RawFileError)?
.1)
}
}