Dave Chinner: > On Fri, Oct 31, 2008 at 11:37:58AM -0400, Wietse Venema wrote: > > Eric Sandeen: > > > > This > > > > would violate a basic requirement of Postfix (don't lose data after > > > > fsync). Postfix updates existing files all the time: it updates > > > > queue files as it marks recipients as done, and it updates mailbox > > > > files as it appends mail. > > > > > > As long as postfix is looking after data properly with fsyncs etc, xfs > > > should be perfectly safe w.r.t. data integrity on a crash. If you see > > > any other behavior, it's a *bug* which should be reported, and I'm sure > > > it would be fixed. As far as I know, though, there is no issue here. > > > > The specific question is, will unclean shutdown cause loss of data > > that was already fsynced, > > No. > > > when the file was updated after the fsync. > > and no. > > XFS guarantees that you won't lose anything you fsync()d. You might > lose what you wrote after the fsync()), though, because you haven't > fsync()d it. Obvious, yes?
This is how I hoped any reasonable implementation would work. The stories about null files made me wonder if there was something unusual about XFS that I should be aware of. > > For example, if the on-disk file metadata is updated after the file > > data is appended, then there is no need to have a zero-fill problem > > after crash during append. > > In case you didn't read Eric's response - that's exactly how we > fixed XFS to prevent this problem. And please stop propagating > this erroneous "zero-fill" meme - Eric addressed how wrong that > FUD is as well. Just confirming a specific case that I care about. Here's something I would like to know regarding the order of directory updates: - Does fsync(file) guarantee the file's directory entry is safe? Some file systems complete directory updates before the open/link/rename system call returns, so fsync() doesn't have to worry about it. - Does rename() guarantee that at least one directory entry will exist even when the system crashes in the middle of the operation? Postfix assumes both answers are "yes"; old ext2fs violated both assumptions. > > What if the crash happens after Postfix requests a 1-byte write in > > the middle of a file, i.e. without changing the size? A > > reasonable implementation would not corrupt the file, but would > > either update the file data or not change it. I can deal with > > that. > > That is exactly how XFS has always behaved for non-extending data > overwrite. i.e. Exactly the same pretty much every filesystem that > has ever existed. Good. Thanks for confirming that XFS is not unusual. Wietse