On Fri, Mar 27, 2009 at 07:24:38AM -0400, Theodore Tso wrote:On Fri, Mar 27, 2009 at 06:21:14AM +0000, Matthew Garrett wrote:(It could be argued that most relevant Unices implemented fsync() even before then, so its status in POSIX was broadly irrelevant. The obvious counterargument is that most relevant Unix filesystems ensure that data is written before a clobbering rename() is carried out, so POSIX is again not especially releant)Nope, not true. Most relevant Unix file systems sync'ed data blocks
on a 30 timer, and metadata on 5 second timers. They did *not* force
data to be written before a clobbering rename() was carried you;
you're rewriting history when you say that; it's simply not true.
Rename was atomic *only* where metadata was concerned, and all the
talk about rename being atomic was because back then we didn't have
flock() and you built locking primitives open(O_CREAT) and rename();
but that was only metadata, and that was only if the system didn't
crash.
No, you're missing my point. The other Unix file systems are irrelevant. The number of people running them and having any real risk of system crash is small, and they're the ones with full system backups anyway.