diff --git a/store/src/types.rs b/store/src/types.rs index 65473e193..e1a3bcb99 100644 --- a/store/src/types.rs +++ b/store/src/types.rs @@ -17,14 +17,8 @@ use memmap; use std::cmp; use std::fs::{self, File, OpenOptions}; use std::io::{self, BufRead, BufReader, BufWriter, ErrorKind, Read, Write}; -use std::os::unix::io::AsRawFd; use std::path::Path; -#[cfg(not(any(target_os = "linux", target_os = "android")))] -use libc::{ftruncate as ftruncate64, off_t as off64_t}; -#[cfg(any(target_os = "linux"))] -use libc::{ftruncate64, off64_t}; - use core::core::hash::Hash; use core::ser::{self, FixedLength}; @@ -189,8 +183,8 @@ impl AppendOnlyFile { /// written data accessible. pub fn flush(&mut self) -> io::Result<()> { if self.buffer_start_bak > 0 { - // flushing a rewound state, we need to truncate before applying - self.truncate(self.buffer_start)?; + // Flushing a rewound state, we need to truncate via set_len() before applying. + self.file.set_len(self.buffer_start as u64)?; self.buffer_start_bak = 0; } @@ -256,16 +250,16 @@ impl AppendOnlyFile { } } - /// Truncates the underlying file to the provided offset - pub fn truncate(&self, offs: usize) -> io::Result<()> { - let fd = self.file.as_raw_fd(); - let res = unsafe { ftruncate64(fd, offs as off64_t) }; - if res == -1 { - Err(io::Error::last_os_error()) - } else { - Ok(()) - } - } + // /// Truncates the underlying file to the provided offset + // pub fn truncate(&self, offs: usize) -> io::Result<()> { + // let fd = self.file.as_raw_fd(); + // let res = unsafe { ftruncate64(fd, offs as off64_t) }; + // if res == -1 { + // Err(io::Error::last_os_error()) + // } else { + // Ok(()) + // } + // } /// Saves a copy of the current file content, skipping data at the provided /// prune indices. The prune Vec must be ordered.