Btrfs: balance btree more often
authorChris Mason <chris.mason@oracle.com>
Mon, 18 May 2009 14:41:58 +0000 (10:41 -0400)
committerChris Mason <chris.mason@oracle.com>
Wed, 10 Jun 2009 15:29:47 +0000 (11:29 -0400)
With the new back reference code, the cost of a balance has gone down
in terms of the number of back reference updates done.  This commit
makes us more aggressively balance leaves and nodes as they become
less full.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/ctree.c

index 2f633e751198b9b3b2d3124eeaa1f426c430b13e..60a45f3a4e916fe9af5a8c644b3a8eb9b5b73f81 100644 (file)
@@ -1651,7 +1651,7 @@ setup_nodes_for_search(struct btrfs_trans_handle *trans,
                }
                b = p->nodes[level];
        } else if (ins_len < 0 && btrfs_header_nritems(b) <
-                  BTRFS_NODEPTRS_PER_BLOCK(root) / 4) {
+                  BTRFS_NODEPTRS_PER_BLOCK(root) / 2) {
                int sret;
 
                sret = reada_for_balance(root, p, level);
@@ -3807,7 +3807,7 @@ int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
                }
 
                /* delete the leaf if it is mostly empty */
-               if (used < BTRFS_LEAF_DATA_SIZE(root) / 4) {
+               if (used < BTRFS_LEAF_DATA_SIZE(root) / 2) {
                        /* push_leaf_left fixes the path.
                         * make sure the path still points to our leaf
                         * for possible call to del_ptr below