From: Chris Mason <chris.mason@oracle.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>,
linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org,
linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: Btrfs trees for linux-next
Date: Thu, 11 Dec 2008 09:43:16 -0500 [thread overview]
Message-ID: <1229006596.22236.46.camel@think.oraclecorp.com> (raw)
In-Reply-To: <20081210200604.8e190b0d.akpm@linux-foundation.org>
On Wed, 2008-12-10 at 20:06 -0800, Andrew Morton wrote:
> On Thu, 11 Dec 2008 14:14:36 +1100 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>
> > Hi Andrew,
> >
> > On Wed, 10 Dec 2008 21:34:56 -0500 Chris Mason <chris.mason@oracle.com> wrote:
> > >
> > > Just an update, while I still have a long todo list and plenty of things
> > > to fix in the code, these src trees have been updated with a disk format
> > > I hope to maintain compatibility with from here on. There are still
> > > format changes planned, but should go in through the compat mechanisms
> > > in the sources now.
> > >
> > > The btrfs trees are still at 2.6.28-rc5, but I just tested against
> > > linux-next without problems.
> >
> > Do you think this is ready to be added to the end of linux-next, yet? Or
> > is this more -mm material?
>
> I'd prefer that it go into linux-next in the usual fashion. But the
> first step is review..
I'm updating the various docs on the btrfs wiki. From a kernel impact
point of view, btrfs only changes fs/Kconfig and fs/Makefile.
Some of the most visible problems in the code are:
No support for fs blocksizes other than the page size. This includes
data blocks and btree leaves/nodes. In both cases, the infrastructure
to do it is about 1/2 there, but some ugly problems remain.
btrfs_file_write should just be removed in favor of write_begin/end.
Right now, the main thing btrfs_file_write does is the dance to setup
delalloc, so this should be fairly easy.
The multi-device code uses a very simple brute force scan from userland
to populate the list of devices that belong to a given FS. Kay Sievers
has some ideas on hotplug magic to make this less dumb. (The scan isn't
required for single device filesystems).
extent_io.c should be split up into two files, one for the extent_buffer
code and one for the state bit code.
struct-funcs.c needs a big flashing neon sign about what it does and
why. The extent_buffer interface needs much clearer documentation
around why it is there and how it works.
There are too many worker threads. At least some of them should be
shared between filesystems instead of started for each FS. Each pool of
worker thread represents some operation that would end up deadlocking if
it shared threads with another pool.
There are too many memory allocations on the IO submission path. It
needs mempools and other steps to limit the amount of ram used to write
a single block.
The IO submission path is generally twisty, with helper threads and
lookup functions. There is quite a bit going on here in terms of
asynchronous checksumming and compression and it needs better
documentation.
ENOSPC == BUG()
The extent allocation tree is what records which extents are allocated
on disk, and tree blocks for the extent allocation tree allocated from
the extent allocation tree. This recursion is controlled by deferring
some operations for later processing, and the resulting complexity needs
better documentation.
-chris
next prev parent reply other threads:[~2008-12-11 14:43 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-20 12:18 Btrfs trees for linux-next Chris Mason
2008-12-11 2:34 ` Chris Mason
2008-12-11 3:14 ` Stephen Rothwell
2008-12-11 4:06 ` Andrew Morton
2008-12-11 5:55 ` Stephen Rothwell
2008-12-11 14:43 ` Chris Mason [this message]
2008-12-15 21:03 ` Andreas Dilger
2008-12-15 22:55 ` Kay Sievers
2008-12-16 1:37 ` Chris Mason
2008-12-16 1:39 ` Kay Sievers
2008-12-17 13:23 ` Notes on support for multiple devices for a single filesystem Christoph Hellwig
2008-12-17 14:50 ` Kay Sievers
2008-12-17 15:08 ` Christoph Hellwig
2008-12-17 15:33 ` Kay Sievers
2008-12-17 14:53 ` Chris Mason
2008-12-17 19:53 ` Andrew Morton
2008-12-17 20:58 ` Chris Mason
2008-12-17 21:20 ` Kay Sievers
2008-12-17 21:26 ` Chris Mason
2008-12-17 21:27 ` Jeff Garzik
2008-12-18 21:22 ` Bryan Henderson
2008-12-17 21:24 ` Andreas Dilger
2008-12-17 21:30 ` Jeff Garzik
2008-12-17 21:41 ` Chris Mason
2008-12-22 1:59 ` Liu Hui
2008-12-17 22:04 ` Andreas Dilger
2008-12-17 22:19 ` Dave Kleikamp
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=1229006596.22236.46.camel@think.oraclecorp.com \
--to=chris.mason@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sfr@canb.auug.org.au \
/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).