func()

in internal/vfs/osfs/sync_darwin.go [44:66]


func (f *File) doSync(flags vfs.SyncFlag) error {
	for {
		_, err := unix.FcntlInt(f.File.Fd(), unix.F_FULLFSYNC, 0)
		err = normalizeSysError(err)
		if err == nil || isIOError(err) {
			return err
		}

		if isRetryErr(err) {
			continue
		}

		// XXX: shall we 'guard' the second fsync via ENOTTY, EINVAL, ENXIO ?
		//      Question: What happens to the error status when calling fsync,
		//                if F_FULLFSYNC did actually fail due to an IO error, not
		//                captured by isIOError?
		err = f.File.Sync()
		if isRetryErr(err) {
			continue
		}
		return err
	}
}