| 1 | use std::{fs::File, io}; |
| 2 | |
| 3 | pub(crate) fn flush(file: &File) -> io::Result<()> { |
| 4 | let result = file.sync_all(); |
| 5 | #[cfg(target_os = "macos")] |
| 6 | if result |
| 7 | .as_ref() |
| 8 | .is_err_and(|error| error.raw_os_error() == Some(nix::libc::ENOTSUP)) |
| 9 | { |
| 10 | // SMB uses standard FLUSH when Apple's F_FULLFSYNC extension is unavailable. |
| 11 | return nix::unistd::fsync(file).map_err(io::Error::from); |
| 12 | } |
| 13 | result |
| 14 | } |