On 26.06.2019 04:52, Quentin Smith wrote: > Hi, > > svn_io_file_flush_to_disk in subversion/libsvn_subr/io.c fails to > flush files on AFS filesystems on Darwin. The user-visible experience is: > > $ svn commit > svn: E000025: Commit failed (details follow): > svn: E000025: Can't write '/afs/path/db/txn-current' atomically > svn: E000025: Can't flush file '/afs/path/db/svn-CNFY6N' to disk: > Inappropriate ioctl for device > > This is because Darwin defines F_FULLFSYNC, which on AFS (and maybe > other filesystems?) returns ENOTTY. > > The code ignores EINVAL with a comment about filesystems that don't > support it; evidently on Darwin this also needs to include ENOTTY. > > (Also, I suspect it should fall back from fcntl to fsync, since I > suspect fsync /does/ work on AFS filesystems.) > > I repro'd this with svn 1.10.3 (r1842928), but inspection of trunk > confirms the code has not changed.
First of all, thanks for the repor. Please provide a standalone reproduction script, using our command-line client. Last but not least, I do wish filesystems were consistent in their implementation ... what on earth is ENOTTY doing here? -- Brane