From: Mingming <cmm@us.ibm.com>
To: Frank Mayhar <fmayhar@google.com>
Cc: linux-ext4@vger.kernel.org
Subject: Re: Data loss/corruption when using fallocate/ftruncate.
Date: Mon, 10 Aug 2009 14:10:39 -0700 [thread overview]
Message-ID: <1249938639.4136.6.camel@mingming-laptop> (raw)
In-Reply-To: <1249930770.22656.14.camel@bobble.smo.corp.google.com>
On Mon, 2009-08-10 at 11:59 -0700, Frank Mayhar wrote:
> Hello again, folks. We've got an app that needs to use O_DIRECT for
> performance and is using fallocate() to make sure the files are all in
> one extent. Unfortunately the end size isn't always the fallocated size
> so it has to do a truncate when it's done; the sequence is generally:
>
> create(file)
> fallocate(file, KEEP_SIZE, 0, maxlen)
> write/write/write/write...
> fallocate(file, 0, 0. maxlen-minus a bit)
> ftruncate(file, actual-len)
>
> We've been seeing some of these files end up all or partly zero after
> (but not before) the truncate. After further analysis, it's clear that
> the last extent (possibly the only extent) is being marked uninit for
> some reason. The actual blocks on disk are nonzero but due to the
> extent being marked uninit they are being read as zero.
>
> Note that this isn't easy to reproduce; lots of other stuff is going on
> when this happens. Our feeling is that there's a race somewhere, quite
> possibly between fallocate and ftruncate, but it's not clear. Certainly
> a single-threaded application doesn't see this, nor does an application
> that uses mutexes to serialize access to the file.
>
> This is a heads-up to point out a real problem. We're still analyzing
> and trying to track down the bug but it may take a little while.
Which kernel you are running? Two month ago a similar data "lose" issue
caused by mismark an previously-preallocated-but-later-filled trunk as
uninitialized after truncate. The following patch has been in 2.6.31-rc1
http://lists.openwall.net/linux-ext4/2009/06/10/30
Mingming
prev parent reply other threads:[~2009-08-10 21:10 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-10 18:59 Data loss/corruption when using fallocate/ftruncate Frank Mayhar
2009-08-10 21:10 ` Mingming [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1249938639.4136.6.camel@mingming-laptop \
--to=cmm@us.ibm.com \
--cc=fmayhar@google.com \
--cc=linux-ext4@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox