On Thu, Jun 19, 2008 at 11:41:17AM -0500, Eric Sandeen wrote:Correct, the benchmark just copies, moves, hardlinks and deletes a lot
It might be worth runninga "simple" fsx under your kernel too; last time
I tested fsx it was still happy and it exercises fs ops (including
truncate) at random...
From what Holger described, it's doubtful that the bug is in the
truncate operation.
It sounds like i_size is actually dropping inI always had the feeling that waiting a day or unmounting caused a lot
size at some pointer long after the file was written. If I had to
guess the value in the inode cache is correct; and perhaps so is the
value on the journal. But somehow, the wrong value is getting written
to disk (remember the jbd layer can keep up to three different
versions of filesystem metadata in memory, because most of the time we
don't block modifications to the filesystem while we are in the middle
of writing a previous commit to disk). So depending on whether the
inode gets redirtied or not, the inconsistency could self-heal, and if
the inode never gets pushed out of memory due to memory pressure, the
problem might not be noticed until the system reboots or the
filesystem is unmounted.