← Back to team overview

ecryptfs team mailing list archive

[Bug 317781] Re: Ext4 data loss

 

The fundamental problem is that there are two similar but different
operations an application developer can request:

1. open(A)-write(A,data)-close(A)-rename(A,B): replace the contents of B
with data, atomically. I don't care when or even if you make the change,
but whenever you get around to it, make sure either the old or the new
version is in place.

2. open(A)-write(A,data)-fsync(A)-close(A)-rename(A,B): replace the
contents of B with data, and do it now.

In practice, operation 1 has worked as described on ext2, ext3, and UFS
with soft-updates, but fails on XFS and unpatched ext4. Operation 1 is
perfectly sane: it's asking for atomicity without durability. KDE's
configuration is a perfect candiate. Browser history is another. For a
mail server or an interactive editor, of course, you'd want operation 2.

Some people suggest simply replacing operation 1 with operation 2.
That's stupid. While operation 2 satisfies all the constraints of
operation 1, it incurs a drastic and unnecessary performance penalty. By
claiming operation 1 is simply operation 2 spelled incorrectly, you
remove an important word from an application programmer's vocabulary.
How else is an he supposed to request atomicity without durability?

(And using a "real database" isn't a good enough answer: then you've
just punted the same problem to a far heavier system, and for no good
reason. As another commenter mentioned, it's a lot easier to administer
a set of small, independent text files. There is no reason a filesystem
in 2009 should be able to cope a few hundred files.)

The fixes in 2.6.30 seem to make operation 1 work correctly, and that's
good enough for me. I don't recommend application developers insert
fsync calls everywhere; that will kill performance. Just use operation 1
and complain loudly when filesystems break it. While it may not be
guaranteed by POSIX, operation 1's atomicity is nevertheless something
any sane filesystme should provide.

-- 
Ext4 data loss
https://bugs.launchpad.net/bugs/317781
You received this bug notification because you are a member of eCryptfs,
which is subscribed to ecryptfs-utils in ubuntu.

Status in “ecryptfs-utils” source package in Ubuntu: Invalid
Status in “linux” source package in Ubuntu: Confirmed
Status in ecryptfs-utils in Ubuntu Jaunty: Invalid
Status in linux in Ubuntu Jaunty: Confirmed

Bug description:
I recently installed Kubuntu Jaunty on a new drive, using Ext4 for all my data.

The first time i had this problem was a few days ago when after a power loss ktimetracker's config file was replaced by a 0 byte version . No idea if anything else was affected.. I just noticed ktimetracker right away.

Today, I was experimenting with some BIOS settings that made the system crash right after loading the desktop. After a clean reboot pretty much any file written to by any application (during the previous boot) was 0 bytes.
For example Plasma and some of the KDE core config files were reset. Also some of my MySQL databases were killed...

My EXT4 partitions all use the default settings with no performance tweaks. Barriers on, extents on, ordered data mode..

I used Ext3 for 2 years and I never had any problems after power losses or system crashes.

Jaunty has all the recent updates except for the kernel that i don't upgrade because of bug #315006

ProblemType: Bug
Architecture: amd64
DistroRelease: Ubuntu 9.04
NonfreeKernelModules: nvidia
Package: linux-image-2.6.28-4-generic 2.6.28-4.6
ProcCmdLine: root=UUID=81942248-db70-46ef-97df-836006aad399 ro rootfstype=ext4 vga=791 all_generic_ide elevator=anticipatory
ProcEnviron:
 LANGUAGE=
 LANG=en_US.UTF-8
 SHELL=/bin/bash
ProcVersionSignature: Ubuntu 2.6.28-4.6-generic
SourcePackage: linux