Use F_FULLSYNC in darwin based operating systems

This commit is contained in:
rajajisai
2025-08-24 18:45:46 -04:00
parent 5a8f281555
commit 84d20ba60f

View File

@@ -259,12 +259,24 @@ impl File for UnixFile {
#[instrument(err, skip_all, level = Level::TRACE)]
fn sync(&self, c: Completion) -> Result<Completion> {
let file = self.file.lock();
let result = unsafe { libc::fsync(file.as_raw_fd()) };
#[cfg(not(any(target_os = "macos", target_os = "ios")))]
let result = libc::fsync(file.as_raw_fd());
#[cfg(any(target_os = "macos", target_os = "ios"))]
let result = unsafe { libc::fcntl(file.as_raw_fd(), libc::F_FULLFSYNC) };
if result == -1 {
let e = std::io::Error::last_os_error();
Err(e.into())
} else {
#[cfg(not(any(target_os = "macos", target_os = "ios")))]
trace!("fsync");
#[cfg(any(target_os = "macos", target_os = "ios"))]
trace!("fcntl(F_FULLSYNC)");
c.complete(0);
Ok(c)
}