You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//go:build darwin
// +build darwin
package backend
import ( "syscall"
"golang.org/x/sys/unix" )
const ( // Using default File.Sync function, same as fcntl(fd, F_FULLFSYNC)
DM_SYNC = 1
// Using syscall.Fsync function, for MacOS this is not safe but is very fast.
DM_FSYNC = 2
// Using fcntl with F_BARRIERFSYNC parameter, for more details please refer:
// https://developer.apple.com/documentation/xcode/reducing-disk-writes
DM_BFSYNC = 3
F_BARRIERFSYNC = 85 )
var ( // By default using F_BARRIERFSYNC
DarwinSyncMode = DM_BFSYNC )
func (df *DiskFile) Sync() error { switch DarwinSyncMode { case DM_SYNC: return df.File.Sync() case DM_BFSYNC: fd := df.File.Fd() _, err := unix.FcntlInt(fd, F_BARRIERFSYNC, 0) return err default: fd := df.File.Fd() return syscall.Fsync(int(fd)) } }
|