From: Benjamin LaHaise <bcrl@kvack.org>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: linux-ext4@vger.kernel.org
Subject: Re: ext4: indirect block allocations not sequential in 3.4.67 and 3.11.7
Date: Wed, 15 Jan 2014 15:32:05 -0500 [thread overview]
Message-ID: <20140115203205.GA12751@kvack.org> (raw)
In-Reply-To: <20140115202214.GH9229@birch.djwong.org>
On Wed, Jan 15, 2014 at 12:22:14PM -0800, Darrick J. Wong wrote:
> A dumpe2fs would be nice, but I think I have enough here to speculate:
It's trivial to reproduce. Just create a 1GB file, run mkfs.ext3, then
mount with ext4 and dd a 10MB file onto the filesystem.
> The data blocks are all sequential, which looks like what one would expect from
> mballoc. Is your complaint is that the *IND blocks are not inline with the
> data blocks, like what ext3 did?
The problem is that the indirect blocks are nowhere near where the file's
data is. It'd be perfectly okay if they were at the beginning of the range
of blocks used for the file's data.
> FWIW, ext3 did something like this:
> (0-11):6144-6155, (IND):6156, (12-1035):6157-7180, (DIND):7181, (IND):7182,
> (1036-2059):7183-8206, (IND):8207, (2060-2559):8208-8707
>
> I think the behavior that you're seeing is ext4 trying to keep the mapping
> blocks close to the inode table to avoid fragmenting the file -- see
> ext4_find_near() in indirect.c. There's an XXX comment in ext4_find_goal()
> that implies that someone might have wanted to tie in with mballoc, which I
> suppose you could use to restore the ext3 behavior... but there's no way to do
> that.
...
I tried a few tests setting goal to different things, but evidently I'm
not managing to convince mballoc to put the file's data close to my goal
block, something in that mess of complicated logic is making it ignore
the goal value I'm passing in.
-ben
--
"Thought is the essence of where you are now."
next prev parent reply other threads:[~2014-01-15 20:32 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-15 19:28 ext4: indirect block allocations not sequential in 3.4.67 and 3.11.7 Benjamin LaHaise
2014-01-15 20:22 ` Darrick J. Wong
2014-01-15 20:32 ` Benjamin LaHaise [this message]
2014-01-15 21:56 ` Benjamin LaHaise
2014-01-16 3:54 ` Theodore Ts'o
2014-01-16 18:48 ` Benjamin LaHaise
2014-01-16 19:12 ` Theodore Ts'o
2014-01-16 19:30 ` Benjamin LaHaise
2014-01-20 20:52 ` Eric Sandeen
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=20140115203205.GA12751@kvack.org \
--to=bcrl@kvack.org \
--cc=darrick.wong@oracle.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;
as well as URLs for NNTP newsgroup(s).