From: Shen Feng <shen@cn.fujitsu.com>
To: cmm@us.ibm.com
Cc: linux-ext4@vger.kernel.org, Theodore Tso <tytso@MIT.EDU>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 2/2] ext4: Make ext4_ext_find_extent fills ext_path completely
Date: Fri, 13 Jun 2008 14:47:39 +0800 [thread overview]
Message-ID: <4852180B.6060204@cn.fujitsu.com> (raw)
In-Reply-To: <48520833.1080802@cn.fujitsu.com>
Shen Feng Wrote:
>
> Mingming Cao Wrote:
>> On Wed, 2008-06-11 at 13:55 +0800, Shen Feng wrote:
>>> When pos=0 or depth, the fields of ext4_ext_path is not
>>> completely filled.
>>> This patch also removes some unnecessary code.
>>>
>> I added this patch to the patch queue, unless somebody disagree.
>>
>> Mingming
>>> Signed-off-by: Shen Feng <shen@cn.fujitsu.com>
>>> ---
>>> fs/ext4/extents.c | 4 ++--
>>> 1 files changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
>>> index d4f76d7..ff609df 100644
>>> --- a/fs/ext4/extents.c
>>> +++ b/fs/ext4/extents.c
>>> @@ -524,6 +524,7 @@ ext4_ext_find_extent(struct inode *inode, ext4_lblk_t block,
>>> alloc = 1;
>>> }
>>> path[0].p_hdr = eh;
>>> + path[0].p_bh = NULL;
>>>
>>> i = depth;
>>> /* walk through the tree */
>>> @@ -552,12 +553,11 @@ ext4_ext_find_extent(struct inode *inode, ext4_lblk_t block,
>>> }
>>>
>>> path[ppos].p_depth = i;
>>> - path[ppos].p_hdr = eh;
>>> - path[ppos].p_ext = NULL;
>>> path[ppos].p_idx = NULL;
>>>
>>> /* find extent */
>>> ext4_ext_binsearch(inode, path + ppos, block);
>>> + path[ppos].p_block = ext4_ext_pblock(path[ppos].p_ext);
>
> Today I tested the patch with bonnie++ and found that sometimes
> path[ppos].p_ext may be NULL. This may cause kernel oops.
>
> This is because ext4_ext_binsearch return directly when the leaf is empty.
>
I updated the patch as following.
This patch is tested by bonnie++ and ltp fs test.
This patch is also rebased from the 2.6.26-RC5 and has no dependency to
ext4: add ext4_ prefix for ext_block and idx_pblock patch.
Signed-off-by: Shen Feng <shen@cn.fujitsu.com>
---
fs/ext4/extents.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 47929c4..1d636cb 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -524,6 +524,7 @@ ext4_ext_find_extent(struct inode *inode, ext4_lblk_t block,
alloc = 1;
}
path[0].p_hdr = eh;
+ path[0].p_bh = NULL;
i = depth;
/* walk through the tree */
@@ -552,12 +553,14 @@ ext4_ext_find_extent(struct inode *inode, ext4_lblk_t block,
}
path[ppos].p_depth = i;
- path[ppos].p_hdr = eh;
path[ppos].p_ext = NULL;
path[ppos].p_idx = NULL;
/* find extent */
ext4_ext_binsearch(inode, path + ppos, block);
+ /* if not an empty leaf */
+ if (path[ppos].p_ext)
+ path[ppos].p_block = ext_pblock(path[ppos].p_ext);
ext4_ext_show_path(inode, path);
-- 1.5.5.1
prev parent reply other threads:[~2008-06-13 6:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-11 5:55 [PATCH 2/2] ext4: Make ext4_ext_find_extent fills ext_path completely Shen Feng
2008-06-11 11:43 ` Aneesh Kumar K.V
2008-06-12 0:28 ` Shen Feng
2008-06-12 22:27 ` Mingming Cao
2008-06-13 5:40 ` Shen Feng
2008-06-13 6:47 ` Shen Feng [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=4852180B.6060204@cn.fujitsu.com \
--to=shen@cn.fujitsu.com \
--cc=akpm@linux-foundation.org \
--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.