mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
misc: Bulk upgrade dependencies
In particular update for the vmm-sys-util upgrade and all the other dependent packages. This requires an updated forked version of kvm-bindings (due to updated vfio-ioctls) but allowed the removal of our forked version of kvm-ioctls. The changes to the API from kvm-ioctls and vmm-sys-util required some other minor changes to the code. Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
@@ -22,7 +22,7 @@ use std::io::{self, Read, Seek, SeekFrom, Write};
|
||||
use std::mem::size_of;
|
||||
use vmm_sys_util::{
|
||||
file_traits::FileSetLen, file_traits::FileSync, seek_hole::SeekHole, write_zeroes::PunchHole,
|
||||
write_zeroes::WriteZeroes,
|
||||
write_zeroes::WriteZeroesAt,
|
||||
};
|
||||
|
||||
pub use crate::raw_file::RawFile;
|
||||
@@ -1274,8 +1274,7 @@ impl QcowFile {
|
||||
// unallocated clusters already read back as zeroes.
|
||||
if let Some(offset) = self.file_offset_read(curr_addr)? {
|
||||
// Partial cluster - zero it out.
|
||||
self.raw_file.file_mut().seek(SeekFrom::Start(offset))?;
|
||||
self.raw_file.file_mut().write_zeroes(count)?;
|
||||
self.raw_file.file_mut().write_zeroes_at(offset, count)?;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1528,6 +1527,13 @@ impl PunchHole for QcowFile {
|
||||
}
|
||||
}
|
||||
|
||||
impl WriteZeroesAt for QcowFile {
|
||||
fn write_zeroes_at(&mut self, offset: u64, length: usize) -> io::Result<usize> {
|
||||
self.punch_hole(offset, length as u64)?;
|
||||
Ok(length)
|
||||
}
|
||||
}
|
||||
|
||||
impl SeekHole for QcowFile {
|
||||
fn seek_hole(&mut self, offset: u64) -> io::Result<Option<u64>> {
|
||||
match self.find_allocated_cluster(offset, false) {
|
||||
@@ -1705,6 +1711,7 @@ mod tests {
|
||||
use super::*;
|
||||
use std::io::{Read, Seek, SeekFrom, Write};
|
||||
use vmm_sys_util::tempfile::TempFile;
|
||||
use vmm_sys_util::write_zeroes::WriteZeroes;
|
||||
|
||||
fn valid_header_v3() -> Vec<u8> {
|
||||
vec![
|
||||
|
||||
@@ -15,7 +15,7 @@ use std::fs::{File, Metadata};
|
||||
use std::io::{self, Read, Seek, SeekFrom, Write};
|
||||
use std::os::unix::io::{AsRawFd, RawFd};
|
||||
use std::slice;
|
||||
use vmm_sys_util::{seek_hole::SeekHole, write_zeroes::PunchHole};
|
||||
use vmm_sys_util::{seek_hole::SeekHole, write_zeroes::PunchHole, write_zeroes::WriteZeroesAt};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct RawFile {
|
||||
@@ -281,6 +281,12 @@ impl Seek for RawFile {
|
||||
}
|
||||
}
|
||||
|
||||
impl WriteZeroesAt for RawFile {
|
||||
fn write_zeroes_at(&mut self, offset: u64, length: usize) -> std::io::Result<usize> {
|
||||
self.file.write_zeroes_at(offset, length)
|
||||
}
|
||||
}
|
||||
|
||||
impl PunchHole for RawFile {
|
||||
fn punch_hole(&mut self, offset: u64, length: u64) -> std::io::Result<()> {
|
||||
self.file.punch_hole(offset, length)
|
||||
|
||||
Reference in New Issue
Block a user