From 0010a9227eef21cdde39f1a14ce38b934db5de80 Mon Sep 17 00:00:00 2001 From: antiochp <30642645+antiochp@users.noreply.github.com> Date: Mon, 12 Nov 2018 13:54:38 +0000 Subject: [PATCH 1/2] replace ftruncate/ftruncate64 with a simple set_len() call --- store/src/types.rs | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) 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. From f820b3675dbfb8bab00f237e50065e274939e7e9 Mon Sep 17 00:00:00 2001 From: antiochp <30642645+antiochp@users.noreply.github.com> Date: Mon, 12 Nov 2018 13:59:22 +0000 Subject: [PATCH 2/2] cleanup --- store/src/types.rs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/store/src/types.rs b/store/src/types.rs index e1a3bcb99..442e52709 100644 --- a/store/src/types.rs +++ b/store/src/types.rs @@ -250,17 +250,6 @@ 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(()) - // } - // } - /// Saves a copy of the current file content, skipping data at the provided /// prune indices. The prune Vec must be ordered. pub fn save_prune(