On Tue, Dec 07 2021, Patrick Steinhardt wrote: > [[PGP Signed Part:Undecided]] > On Tue, Dec 07, 2021 at 02:46:49AM +0000, Neeraj Singh via GitGitGadget wrote: >> From: Neeraj Singh <neerajsi@xxxxxxxxxxxxx> > [...] > [snip] >> diff --git a/wrapper.c b/wrapper.c >> index 36e12119d76..1c5f2c87791 100644 >> --- a/wrapper.c >> +++ b/wrapper.c >> @@ -546,6 +546,62 @@ int xmkstemp_mode(char *filename_template, int mode) >> return fd; >> } >> >> +int git_fsync(int fd, enum fsync_action action) >> +{ >> + switch (action) { >> + case FSYNC_WRITEOUT_ONLY: >> + >> +#ifdef __APPLE__ >> + /* >> + * on macOS, fsync just causes filesystem cache writeback but does not >> + * flush hardware caches. >> + */ >> + return fsync(fd); > > Below we're looping around `EINTR` -- are Apple systems never returning > it? I think so per cccdfd22436 (fsync(): be prepared to see EINTR, 2021-06-04), but I'm not sure, but in any case it would make sense for this to just call the same loop we've been calling elsewhere. It doesn't seem to hurt, so we can just do that part in the portable portion of the code.