macos: fix O_DIRECT build failure
O_DIRECT has no direct equivalent on MacOS (check out https://github.com/libuv/libuv/issues/1600 for details). Just define it to zero there.
This commit is contained in:
parent
f6a3e2c7d1
commit
53f7e1a0f0
@ -105,7 +105,7 @@ func (fs *FS) mangleOpenFlags(flags uint32) (newFlags int) {
|
|||||||
// crypto header, alignment will be off, even if userspace makes aligned
|
// crypto header, alignment will be off, even if userspace makes aligned
|
||||||
// accesses. Running xfstests generic/013 on ext4 used to trigger lots of
|
// accesses. Running xfstests generic/013 on ext4 used to trigger lots of
|
||||||
// EINVAL errors due to missing alignment. Just fall back to buffered IO.
|
// EINVAL errors due to missing alignment. Just fall back to buffered IO.
|
||||||
newFlags = newFlags &^ syscall.O_DIRECT
|
newFlags = newFlags &^ syscallcompat.O_DIRECT
|
||||||
|
|
||||||
return newFlags
|
return newFlags
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,10 @@ import (
|
|||||||
"github.com/hanwen/go-fuse/fuse"
|
"github.com/hanwen/go-fuse/fuse"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// O_DIRECT means oncached I/O on Linux. No direct equivalent on MacOS and defined
|
||||||
|
// to zero there.
|
||||||
|
const O_DIRECT = 0
|
||||||
|
|
||||||
// Sorry, fallocate is not available on OSX at all and
|
// Sorry, fallocate is not available on OSX at all and
|
||||||
// fcntl F_PREALLOCATE is not accessible from Go.
|
// fcntl F_PREALLOCATE is not accessible from Go.
|
||||||
// See https://github.com/rfjakob/gocryptfs/issues/18 if you want to help.
|
// See https://github.com/rfjakob/gocryptfs/issues/18 if you want to help.
|
||||||
|
@ -14,6 +14,10 @@ import (
|
|||||||
|
|
||||||
const _FALLOC_FL_KEEP_SIZE = 0x01
|
const _FALLOC_FL_KEEP_SIZE = 0x01
|
||||||
|
|
||||||
|
// O_DIRECT means oncached I/O on Linux. No direct equivalent on MacOS and defined
|
||||||
|
// to zero there.
|
||||||
|
const O_DIRECT = syscall.O_DIRECT
|
||||||
|
|
||||||
var preallocWarn sync.Once
|
var preallocWarn sync.Once
|
||||||
|
|
||||||
// EnospcPrealloc preallocates ciphertext space without changing the file
|
// EnospcPrealloc preallocates ciphertext space without changing the file
|
||||||
|
Loading…
x
Reference in New Issue
Block a user