Re: replace() system call needed (was Re: EXT4-ish "fixes" in UBIFS)

From: Artem Bityutskiy
Date: Sun Mar 29 2009 - 09:55:57 EST


Andreas T.Auer wrote:
On 29.03.2009 15:07 Artem Bityutskiy wrote:
Pavel Machek wrote:
Does not fsync. If someone wants to make sure one of the files is on
the disk, he should use replace(). [On non-linux systems, replace()
should be implemented as fsync/rename in libc or something.]
As a user I will avoid using any fs, which requires the tons of
applications to be changed for a reasonable amount of data safety.
I would be happy with these rules. But the fact is, application
people just refuse to add fsync before rename.
Because it slows down the performance.
They say that the
FS has to do this.
They say that FS should not write metadata for non-existing data and
even overwrite "clean" metadata with "dirty" metadata. It is up to the
fs to decide, whether fsync is needed to achieve this.

Well, this makes sense, but the fact is that FS developers did
not keep this in mind. And when we have been developing UBIFS,
we also naively assumed that user-space would just call fsync
if needed. And it was easier to implement stuff this way. And
it looked like POSIX and other Linux FSes assumed that.

But well, we can change UBIFS behavior, but it would be nice
to have some agreement on all this.

--
Best Regards,
Artem Bityutskiy (ÐÑÑÑÐ ÐÐÑÑÑÐÐÐ)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/