diff options
| author | Jakob Unterwurzacher | 2023-06-02 14:24:44 +0200 |
|---|---|---|
| committer | Jakob Unterwurzacher | 2026-07-16 19:56:48 +0200 |
| commit | e56c2e44cc4dd1484cae78956f8ff72a9eea42f2 (patch) | |
| tree | 5c95013bf4a086bb5099369c78ea0852dbb8cf80 /internal/syscallcompat/sys_linux.go | |
| parent | 1e1603c06de224be85d589943a08f2f825347466 (diff) | |
fusefrontend: sharedstorage: use byte-range lock on file header creation
Multiple host writing to the same empty file at the same time
could have overwritten each other's newly created file header,
leading to data corruption.
Fix the race by placing a byte-range lock on the file when
creating the file header.
Diffstat (limited to 'internal/syscallcompat/sys_linux.go')
| -rw-r--r-- | internal/syscallcompat/sys_linux.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/internal/syscallcompat/sys_linux.go b/internal/syscallcompat/sys_linux.go index a850ba1..51a2c09 100644 --- a/internal/syscallcompat/sys_linux.go +++ b/internal/syscallcompat/sys_linux.go @@ -35,6 +35,10 @@ const ( // Only defined on Linux ENODATA = unix.ENODATA + + // F_OFD_SETLKW only exists on Linux. On Darwin, fall back to F_SETLKW as a + // flawed replacement. + F_OFD_SETLKW = unix.F_OFD_SETLKW ) var preallocWarn sync.Once |
