2009-04-21 20:17:06

by Chris Mason

[permalink] [raw]
Subject: [GIT PULL] Btrfs changes for 2.6.30-rc

Hello everyone,

The master branch of:

git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git

Has some fixes for oopsen and a cluster of bugs inside of one of the
btree readahead functions.

I also jumped on the fsync latency train for btrfs and switched over to
WRITE_SYNC for the writes I was going to wait on.

This is a bigger change in btrfs because I had to add a high priority
list to the async helper threads, but it had a big impact on performance
overall. Before, the writes we were waiting on would get stuck behind
the less critical writes in the async helper threads, and now they pop
out much faster.

Average fsync latencies concurrent with a streaming writer went down
from ~5 seconds (with longer peaks) to < 1 second.

Chris Mason (4):
Btrfs: use WRITE_SYNC for synchronous writes
Btrfs: add a priority queue to the async thread helpers
Btrfs: fix oops on page->mapping->host during writepage
Btrfs: use the right node in reada_for_balance

fs/btrfs/async-thread.c | 60 ++++++++++++++++++-----
fs/btrfs/async-thread.h | 2
fs/btrfs/ctree.c | 17 ++++--
fs/btrfs/disk-io.c | 9 ++-
fs/btrfs/extent_io.c | 86 ++++++++++++++++++++++++---------
fs/btrfs/file.c | 2
fs/btrfs/ordered-data.c | 2
fs/btrfs/volumes.c | 124 +++++++++++++++++++++++++++++++++++++-----------
fs/btrfs/volumes.h | 13 ++++-

-chris


2009-04-21 22:36:19

by Chris Mason

[permalink] [raw]
Subject: Re: [GIT PULL] Btrfs changes for 2.6.30-rc

On Tue, 2009-04-21 at 09:29 -0400, Chris Mason wrote:
> Hello everyone,
>
> The master branch of:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git
>
> Has some fixes for oopsen and a cluster of bugs inside of one of the
> btree readahead functions.
>
> I also jumped on the fsync latency train for btrfs and switched over to
> WRITE_SYNC for the writes I was going to wait on.
>
> This is a bigger change in btrfs because I had to add a high priority
> list to the async helper threads, but it had a big impact on performance
> overall. Before, the writes we were waiting on would get stuck behind
> the less critical writes in the async helper threads, and now they pop
> out much faster.
>
> Average fsync latencies concurrent with a streaming writer went down
> from ~5 seconds (with longer peaks) to < 1 second.
>

Jens Axboe hit a bug in fallocate, I've pushed that fix out today as
well. Updated shortlog/diffstat:


Chris Mason (5):
Btrfs: use WRITE_SYNC for synchronous writes
Btrfs: add a priority queue to the async thread helpers
Btrfs: fix oops on page->mapping->host during writepage
Btrfs: use the right node in reada_for_balance
Btrfs: fix btrfs fallocate oops and deadlock

fs/btrfs/async-thread.c | 60 ++++++++++++++++++-----
fs/btrfs/async-thread.h | 2
fs/btrfs/ctree.c | 17 ++++--
fs/btrfs/disk-io.c | 9 ++-
fs/btrfs/extent_io.c | 86 ++++++++++++++++++++++++---------
fs/btrfs/file.c | 6 +-
fs/btrfs/inode.c | 36 ++++++++++---
fs/btrfs/ordered-data.c | 2
fs/btrfs/volumes.c | 124 +++++++++++++++++++++++++++++++++++++-----------
fs/btrfs/volumes.h | 13 ++++-

-chris