On Tue, Aug 30, 2022 at 3:44 AM Magnus Hagander <mag...@hagander.net> wrote: > On Fri, Aug 26, 2022 at 11:29 PM Thomas Munro <thomas.mu...@gmail.com> wrote: > > Now it looks strange: we have both "fsync" and "fsync_writethrough" > > doing exactly the same thing while vaguely implying otherwise, and the > > contrast with other operating systems (if I divined that aspect > > correctly) mostly doesn't apply. How flush commands affect various > > caches in modern storage stacks is also not really OS-specific AFAIK. > > > > (Obviously macOS is a different story...) > > Given that it does vary (because macOS is actually an OS :D), we might > need to start from a matrix of exactly what happens in different > states, and then try to map that to a set? I fully agree that if > things actually behave the same, they should be called the same.
Thanks, I'll take that as a +1 for dropping the redundant level for Windows. (Of course it stays for macOS). I like that our current levels are the literal names of standard interfaces we call, since the rest is out of our hands. I'm not sure what you could actually *do* with the information that some OS doesn't flush write caches, other than document it and suggest a remedy (e.g. turn it off). I would even prefer it if fsync_writethrough were called F_FULLFSYNC, following that just-say-what-it-does-directly philosophy, but that horse is already over the horizon. > And it may also be that there is no longer a difference between > direct-drive and RAID-with-battery-or-flash, which used to be the huge > difference back then, where you had to tune for it. For many cases > that has been negated by just not using that (and using NVME and > possibly software raid instead), but there are certainly still people > using such systems... I believe modern systems are a lot better at negotiating the need for flushes (i.e. for *volatile* caches). In contrast, the FUA situation (as used for FILE_FLAG_WRITE_THROUGH) seems like a multi-level dumpster fire on anything but high-end gear, from what I've been able to figure out so far, though I'm no expert.