From: Mingming <cmm@us.ibm.com>
To: Theodore Tso <tytso@mit.edu>
Cc: Eric Sandeen <sandeen@redhat.com>,
Holger Kiehl <Holger.Kiehl@dwd.de>,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
Jan Kara <jack@suse.cz>,
Solofo.Ramangalahy@bull.net, Nick Dokos <nicholas.dokos@hp.com>,
linux-ext4@vger.kernel.org,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: Performance of ext4
Date: Thu, 19 Jun 2008 12:51:58 -0700 [thread overview]
Message-ID: <1213905118.27507.148.camel@BVR-FS.beaverton.ibm.com> (raw)
In-Reply-To: <20080619174211.GB9119@mit.edu>
On Thu, 2008-06-19 at 13:42 -0400, Theodore Tso wrote:
> On Thu, Jun 19, 2008 at 11:41:17AM -0500, Eric Sandeen wrote:
> >
> > 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 in
> 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.
>
> This is one of the reasons why I'm a bit suspicious that the problem
> may lie in the delayed allocation code; changing i_size without first
> starting a transaction could lead to this sort of problem, for
> example, and the delayed allocation could represent a different code
> path where file blocks get allocated and i_size gets changed.
>
I tend to agree. Without delayed allocation, the in-memory i_size and
on-disk i_disksize normally match each other, since we do block
allocation at prepare_write/write_begin time, and the i_size update just
immedietly around that time. However, with delayed allocation, the in
memory i_size is being update around prepare_write/commit_write, but the
i_disksize won't updated until later writepage/writepages() time. The
window now gets much larger.
With writeback mode, since there is no ordering there, I think it's
possible the the inode dirty pages have been sync to disk and the inode
structure being pushed out of the memory due to memory pressure, before
the i_disksize update cached in jbd2 reach to disk. Perhaps that explain
the "truncation"?
Not sure if this still a issue with the delalloc on new ordered mode, I
guess as long as the inode is on jinode list, and that inode can't push
out of memeory due to memory pressure since jbd is referencing it, then
this seems couldn't happen...
> - Ted
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2008-06-19 19:51 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-11 8:02 Holger Kiehl
2008-06-11 10:59 ` Aneesh Kumar K.V
2008-06-11 19:58 ` Holger Kiehl
2008-06-11 20:17 ` Nick Dokos
2008-06-12 9:02 ` Holger Kiehl
2008-06-12 10:58 ` Solofo.Ramangalahy
2008-06-12 12:00 ` Holger Kiehl
2008-06-12 13:19 ` Theodore Tso
2008-06-12 14:07 ` Holger Kiehl
2008-06-12 18:06 ` Aneesh Kumar K.V
2008-06-12 19:50 ` Holger Kiehl
2008-06-13 8:05 ` Holger Kiehl
2008-06-16 17:54 ` Jan Kara
2008-06-16 18:13 ` Aneesh Kumar K.V
2008-06-17 11:42 ` Holger Kiehl
2008-06-18 5:58 ` Holger Kiehl
2008-06-19 6:58 ` Andreas Dilger
2008-06-19 11:09 ` Theodore Tso
2008-06-19 15:04 ` Holger Kiehl
2008-07-07 13:13 ` Holger Kiehl
2008-07-10 8:11 ` Holger Kiehl
2008-06-19 15:56 ` Theodore Tso
2008-06-19 16:41 ` Eric Sandeen
2008-06-19 17:42 ` Theodore Tso
2008-06-19 19:51 ` Mingming [this message]
2008-06-20 8:32 ` Holger Kiehl
2008-06-20 8:59 ` Theodore Tso
2008-06-20 9:21 ` Holger Kiehl
2008-06-23 17:45 ` Aneesh Kumar K.V
2008-06-24 0:31 ` Mingming
2008-06-24 3:07 ` Aneesh Kumar K.V
2008-06-24 3:28 ` Aneesh Kumar K.V
2008-06-24 3:33 ` Aneesh Kumar K.V
2008-06-24 21:12 ` Holger Kiehl
2008-06-24 22:58 ` Mingming
2008-06-25 9:09 ` Holger Kiehl
2008-06-26 0:46 ` Mingming
2008-06-27 9:14 ` Aneesh Kumar K.V
2008-06-27 9:49 ` Aneesh Kumar K.V
2008-06-27 10:00 ` Jan Kara
2008-06-27 17:35 ` Aneesh Kumar K.V
2008-06-24 17:58 ` Mingming
2008-06-24 12:57 ` Holger Kiehl
2008-06-23 20:55 ` Andreas Dilger
2008-06-20 8:09 ` Holger Kiehl
2008-06-21 15:02 ` Holger Kiehl
2008-06-11 13:54 ` Theodore Tso
2008-06-11 20:21 ` Holger Kiehl
2008-06-12 1:35 ` Theodore Tso
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=1213905118.27507.148.camel@BVR-FS.beaverton.ibm.com \
--to=cmm@us.ibm.com \
--cc=Holger.Kiehl@dwd.de \
--cc=Solofo.Ramangalahy@bull.net \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nicholas.dokos@hp.com \
--cc=sandeen@redhat.com \
--cc=tytso@mit.edu \
/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
all inboxes | Powered by JetHome®