Btrfs: streamline tree-log btree block writeout
authorChris Mason <chris.mason@oracle.com>
Tue, 13 Oct 2009 17:29:19 +0000 (13:29 -0400)
committerChris Mason <chris.mason@oracle.com>
Tue, 13 Oct 2009 17:35:12 +0000 (13:35 -0400)
commit690587d109ffe19d6743e4cc80c18b0906b7f9ff
tree788acd32c4ed1463d0166d0c45b233d96bb102e0
parent257c62e1bce03e5b9f3f069fd52ad73a56de71fd
Btrfs: streamline tree-log btree block writeout

Syncing the tree log is a 3 phase operation.

1) write and wait for all the tree log blocks for a given root.

2) write and wait for all the tree log blocks for the
tree of tree log roots.

3) write and wait for the super blocks (barriers here)

This isn't as efficient as it could be because there is
no requirement to wait for the blocks from step one to hit the disk
before we start writing the blocks from step two.  This commit
changes the sequence so that we don't start waiting until
all the tree blocks from both steps one and two have been sent
to disk.

We do this by breaking up btrfs_write_wait_marked_extents into
two functions, which is trivial because it was already broken
up into two parts.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/transaction.c
fs/btrfs/transaction.h
fs/btrfs/tree-log.c