From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Mingming Cao <cmm@us.ibm.com>
Cc: "Theodore Ts'o" <tytso@mit.edu>,
Ext4 Developers List <linux-ext4@vger.kernel.org>,
Aneesh Kumar <aneesh.kumar@gmail.com>
Subject: Re: [PATCH] ext4: calculate journal credits correctly
Date: Sun, 23 Nov 2008 20:02:58 +0530 [thread overview]
Message-ID: <20081123143258.GA17002@skywalker> (raw)
In-Reply-To: <1226534622.12488.25.camel@mingming-laptop>
On Wed, Nov 12, 2008 at 04:03:42PM -0800, Mingming Cao wrote:
>
> 在 2008-11-06四的 14:51 -0500,Theodore Ts'o写道:
> > This fixes a 2.6.27 regression which was introduced in commit a02908f1.
> >
> > We weren't passing the chunk parameter down to the two subections,
> > ext4_indirect_trans_blocks() and ext4_ext_index_trans_blocks(), with
> > the result that massively overestimate the amount of credits needed by
> > ext4_da_writepages, especially in the non-extents case. This causes
> > failures especially on /boot partitions, which tend to be small and
> > non-extent using since GRUB doesn't handle extents.
> >
> > Thanks to Joseph Fannin for reporting this bug.
> >
> Thanks for fixing this up!
This was sent to my gmail.com id so missed it before.
>
> However, looking at the code path, I wasn't sure if we got the delalloc
> credits right. In ext4_da_writepages()->mpage_da_writepages(), the
> credits is calculated based on the assumption that mpage_da_writepages()
> doing* one* single chunk of contigugous allocation? So only one single
> extent credit is reserved (here you see the "chunk" flag passed from the
> ext4_da_writepages)
>
> __mpage_da_writepage() does do single chunk of block allocation at a
> time, but mpage_da_writepages()->write_cache_pages() will loop the page
> vectors and probably will calling writepage->__mpage_da_writepage->
> mpage_da_map_blocks() multiple times? Am I missing anything?
>
mpage_da_writepages does block allocation for single chunk only.
ext4_da_writepages allocate credit needed for single chunk allocation.
write_cache_pages iterate through contiguous pages and build an in
memory extent. It then call get_blocks for 'x' blocks. After that
we map the blocks to the unmapped buffer_heads. Then we do
ext4_da_writepage which redirty pages which are not fully mapped. That
means we skip pages. We retry using mpage_data_writepages again.
-aneesh
--
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
prev parent reply other threads:[~2008-11-23 14:33 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-03 0:48 JBD2/ext4 error Joseph Fannin
2008-11-03 3:39 ` Theodore Tso
2008-11-06 19:51 ` [PATCH] ext4: calculate journal credits correctly Theodore Ts'o
2008-11-13 0:03 ` Mingming Cao
2008-11-23 14:32 ` Aneesh Kumar K.V [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=20081123143258.GA17002@skywalker \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=aneesh.kumar@gmail.com \
--cc=cmm@us.ibm.com \
--cc=linux-ext4@vger.kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.