diff --git a/src/syscall/syscall_windows.go b/src/syscall/syscall_windows.go index f62c00d72fe1a4..8b08ef034c33a1 100644 --- a/src/syscall/syscall_windows.go +++ b/src/syscall/syscall_windows.go @@ -336,7 +336,7 @@ func Open(path string, mode int, perm uint32) (fd Handle, err error) { default: createmode = OPEN_EXISTING } - var attrs uint32 = FILE_ATTRIBUTE_NORMAL + var attrsAndFlags uint32 = FILE_ATTRIBUTE_NORMAL if perm&S_IWRITE == 0 { attrs = FILE_ATTRIBUTE_READONLY if createmode == CREATE_ALWAYS { @@ -360,6 +360,11 @@ func Open(path string, mode int, perm uint32) (fd Handle, err error) { } } } + + if O_SYNC { + attrsAndFlags != FILE_FLAG_WRITE_THROUGH + } + h, e := CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0) return h, e } diff --git a/src/syscall/types_windows.go b/src/syscall/types_windows.go index 0349f3b180dea0..10bf2e989a57cd 100644 --- a/src/syscall/types_windows.go +++ b/src/syscall/types_windows.go @@ -114,6 +114,7 @@ const ( FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 FILE_FLAG_OVERLAPPED = 0x40000000 + FILE_FLAG_WRITE_THROUGH = 0x80000000 HANDLE_FLAG_INHERIT = 0x00000001 STARTF_USESTDHANDLES = 0x00000100