diff options
Diffstat (limited to 'qcow/src/qcow_raw_file.rs')
-rw-r--r-- | qcow/src/qcow_raw_file.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/qcow/src/qcow_raw_file.rs b/qcow/src/qcow_raw_file.rs index 456b986..a900081 100644 --- a/qcow/src/qcow_raw_file.rs +++ b/qcow/src/qcow_raw_file.rs @@ -7,6 +7,7 @@ use std::io::{self, BufWriter, Seek, SeekFrom}; use std::mem::size_of; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; +use sys_util::WriteZeroes; /// A qcow file. Allows reading/writing clusters and appending clusters. #[derive(Debug)] @@ -133,4 +134,12 @@ impl QcowRawFile { pub fn cluster_offset(&self, address: u64) -> u64 { address & self.cluster_mask } + + /// Zeros out a cluster in the file. + pub fn zero_cluster(&mut self, address: u64) -> io::Result<()> { + let cluster_size = self.cluster_size as usize; + self.file.seek(SeekFrom::Start(address))?; + self.file.write_zeroes(cluster_size)?; + Ok(()) + } } |