On Fri, 2009-03-13 at 15:05 -0600, Federico Mena Quintero wrote:
On Fri, 2009-03-13 at 09:15 -0400, Morten Welinder wrote:
F*** "POSIX allows this"! A program that does open-write-close-
rename should not be left with an empty file in case something
goes wrong. The old file, or the new file. Anything else is insane
and by extension the kernel developers and their ancestors.
100% agreed.
Has anyone actually debugged why this happens? The kernel must surely
ensure that even if it reorders data/metadata requests, it will do so in
sensible ways only, doesn't it?
Its well explained in the various discussions about this. Essentially,
the metadata for the rename is written to disk, but the data in the file
is not (yet, due to delayed allocation) and then the system crashes. On
fsck we discover the file is broken (no data) and set the file size to
0.