4 ms·
to be fair, nothing really perfectly confirmed to POSIX now that i think of it. who remembers the myriad choices in synchronization primitives that could be us
by a-dub 5y ago
to be fair, nothing really perfectly confirmed to POSIX now that i think of it.
who remembers the myriad choices in synchronization primitives that could be used for the main loop in preforking apache? (to work around all the different flavors of broken in unix derivatives) i remember one desperate choice falling all the way through to flock() on a sentinel file on disk...
- smoldesu 5y agoProbably because Linux isn't POSIX-compliant (nor does it really try to be)
- masklinn 5y agomacOS is a certified unix, and after the postgresql people took a look at the situation they found out that it also loses data in that situation. So do OpenBSD and NetBSD. Only FreeBSD would avoid data loss on fsync() failure. AFAIK that remains the case, the only major change I'm aware of is that OpenBSD's fsync is now "locked" into failure after the first failure, at least until you close the file (postgres also played silly bugger on that front).
- smoldesu 5y agoThe only certified UNIX you've listed is macOS, and it doesn't surprise me in the slightest that their frankenkernel doesn't fully comply with POSIX spec. Besides that, I don't know what to tell you. The whole business of "true UNIX" is pretty much thrown to the wayside these days anyways, the list of server-ready POSIX-compliant OSes is tiny, and their market share is even smaller.