>-Andi Kleen [05 Dec 2001 19:26 +0100] wrote:
> > Thanks, Steve, it becomes much clear to me now as why it is. This
> > problem is critical to us as we run structure simulation for up
> > to several weeks and dump intermediate data every couple hours
> > and append them to few large files. If for some reason the system
> > crash during data output (though rarely), all the results from
> > few weeks running will gone which is unacceptable for us.
> > Probably I should looking for FS journaling both meta-data and
> > file-data, although I don't really need file-data journaling if
> > ever I could get my old content back.
> The scenario Steve described obviously does not apply to appending to big
> files, because there is no rename() from a temporary file involved.
> If it has been flushed they will be on disk. You can force flushing
> by using a fsync() for example.
But only be on disk after flushing, correct? What if crashing
during data dumping before it can issue a fsync(), or even during
fsync()? I think the best bet is to remove the old file only
after ensuring the new one is there, or fallback to old one, an
asynchronous trasaction which is I believe what Steve said he is
working on. Same technique as ordered mode in ext3?