diff options
author | Chris Mason <chris.mason@oracle.com> | 2008-05-24 14:04:53 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-25 11:04:03 -0400 |
commit | 0ef3e66b6700eb8f052daa8b89443ff872fbbdfc (patch) | |
tree | 26bce57770b4f093199b6f87ab8ed3a54e951337 /fs/btrfs/ctree.c | |
parent | 515dc3228c568f9df8b634f82b3471e20205ac16 (diff) |
Btrfs: Allocator fix variety pack
* Force chunk allocation when find_free_extent has to do a full scan
* Record the max key at the start of defrag so it doesn't run forever
* Block groups might not be contiguous, make a forward search for the
next block group in extent-tree.c
* Get rid of extra checks for total fs size
* Fix relocate_one_reference to avoid relocating the same file data block
twice when referenced by an older transaction
* Use the open device count when allocating chunks so that we don't
try to allocate from devices that don't exist
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/ctree.c')
-rw-r--r-- | fs/btrfs/ctree.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 02e571e6ee62..1d404bde3cfa 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c | |||
@@ -363,7 +363,7 @@ int btrfs_realloc_node(struct btrfs_trans_handle *trans, | |||
363 | other = btrfs_node_blockptr(parent, i - 1); | 363 | other = btrfs_node_blockptr(parent, i - 1); |
364 | close = close_blocks(blocknr, other, blocksize); | 364 | close = close_blocks(blocknr, other, blocksize); |
365 | } | 365 | } |
366 | if (close && i < end_slot - 2) { | 366 | if (!close && i < end_slot - 2) { |
367 | other = btrfs_node_blockptr(parent, i + 1); | 367 | other = btrfs_node_blockptr(parent, i + 1); |
368 | close = close_blocks(blocknr, other, blocksize); | 368 | close = close_blocks(blocknr, other, blocksize); |
369 | } | 369 | } |