On Fri, Jun 20, 2008 at 08:32:52AM +0000, Holger Kiehl wrote:When the benchmark runs it writes to stdout and with tee to the resultIt sounds like i_size is actually dropping in
size at some pointer long after the file was written. If I had to
sorry, "at some point"...
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
Or, "the right value is never getting written to disk". (Which as I
think about it is more likely; it's likely that an update to i_size is
getting *lost*, perhaps because the delalloc code is possibly
modifying i_size without starting a transaction first. Again this is
just a guess.)
What I find strange is that the missing parts of the file are not for
example exactly 512 or 1024 or 4096 bytes it is mostly some odd number
of bytes.
Is there any chance the truncation point is related to how the program
is writing its output file? i.e., if it is a text file, is the
truncation happening after a new-line or when the stdio library might
have done an explicit or implicit fflush()?