diff options
author | Daniel Verkamp <dverkamp@chromium.org> | 2020-01-07 17:51:04 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-13 21:16:29 +0000 |
commit | d5aa9954237f9eb9c7ec468362fb8262f0975429 (patch) | |
tree | b003550c00fa349cf0eed758b6a5ce02508f5290 /disk/src/qcow/mod.rs | |
parent | 54305cd5e2d52d274c20dd294c9c869a0115e96d (diff) | |
download | crosvm-d5aa9954237f9eb9c7ec468362fb8262f0975429.tar crosvm-d5aa9954237f9eb9c7ec468362fb8262f0975429.tar.gz crosvm-d5aa9954237f9eb9c7ec468362fb8262f0975429.tar.bz2 crosvm-d5aa9954237f9eb9c7ec468362fb8262f0975429.tar.lz crosvm-d5aa9954237f9eb9c7ec468362fb8262f0975429.tar.xz crosvm-d5aa9954237f9eb9c7ec468362fb8262f0975429.tar.zst crosvm-d5aa9954237f9eb9c7ec468362fb8262f0975429.zip |
disk: use seek to determine file length
Add a new disk-specific DiskGetLen trait which uses io::Seek instead of File::metadata() to determine the length so that it works on raw block devices (e.g. /dev/sda) as well as regular files. BUG=b:146811529 TEST=`crosvm run --disk /dev/sda` and verify block device length Change-Id: I6936863490efaa479a3c8745c75c373748c800a1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1990855 Reviewed-by: Zach Reizner <zachr@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Tested-by: Trent Begin <tbegin@chromium.org> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Diffstat (limited to 'disk/src/qcow/mod.rs')
-rw-r--r-- | disk/src/qcow/mod.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/disk/src/qcow/mod.rs b/disk/src/qcow/mod.rs index f449d1d..6bd9719 100644 --- a/disk/src/qcow/mod.rs +++ b/disk/src/qcow/mod.rs @@ -10,8 +10,8 @@ use data_model::{VolatileMemory, VolatileSlice}; use libc::{EINVAL, ENOSPC, ENOTSUP}; use remain::sorted; use sys_util::{ - error, FileGetLen, FileReadWriteAtVolatile, FileReadWriteVolatile, FileSetLen, FileSync, - PunchHole, SeekHole, WriteZeroesAt, + error, FileReadWriteAtVolatile, FileReadWriteVolatile, FileSetLen, FileSync, PunchHole, + SeekHole, WriteZeroesAt, }; use std::cmp::{max, min}; @@ -24,6 +24,7 @@ use std::os::unix::io::{AsRawFd, RawFd}; use crate::qcow::qcow_raw_file::QcowRawFile; use crate::qcow::refcount::RefCount; use crate::qcow::vec_cache::{CacheMap, Cacheable, VecCache}; +use crate::DiskGetLen; #[sorted] #[derive(Debug)] @@ -1571,7 +1572,7 @@ impl FileSetLen for QcowFile { } } -impl FileGetLen for QcowFile { +impl DiskGetLen for QcowFile { fn get_len(&self) -> io::Result<u64> { Ok(self.virtual_size()) } |