diff options
author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2015-11-05 16:32:59 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2015-11-05 13:40:44 +0100 |
commit | e8a5f57b69b583e0f15b931353aef98380b4e796 (patch) | |
tree | 61f277d4d2f6d8415d59e177654d963b19f1e58d /ctree.c | |
parent | fa2dcf14063bd280c5d6b30309fe54cda3c29e30 (diff) | |
download | btrfs-progs-e8a5f57b69b583e0f15b931353aef98380b4e796.tar.gz btrfs-progs-e8a5f57b69b583e0f15b931353aef98380b4e796.tar.bz2 btrfs-progs-e8a5f57b69b583e0f15b931353aef98380b4e796.zip |
btrfs-progs: Allow btrfs_leaf_free_space to accept NULL root
Btrfs_leaf_free_space() function is used to determine the leaf/node
size.
It's OK to use root->nodesize to determine nodesize, but in fact,
extent_buffer->len can also be used to determine the nodesize if caller
can ensure it's a tree block.
So this patch will add support for NULL root for btrfs_leaf_free_space()
function, to allow btrfs_print_leaf() functions to be called in gdb or
to debug temporary btrfs in make_btrfs() without a valid root.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'ctree.c')
-rw-r--r-- | ctree.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -1619,13 +1619,14 @@ static int leaf_space_used(struct extent_buffer *l, int start, int nr) */ int btrfs_leaf_free_space(struct btrfs_root *root, struct extent_buffer *leaf) { + u32 nodesize = (root ? BTRFS_LEAF_DATA_SIZE(root) : leaf->len); int nritems = btrfs_header_nritems(leaf); int ret; - ret = BTRFS_LEAF_DATA_SIZE(root) - leaf_space_used(leaf, 0, nritems); + ret = nodesize - leaf_space_used(leaf, 0, nritems); if (ret < 0) { - printk("leaf free space ret %d, leaf data size %lu, used %d nritems %d\n", - ret, (unsigned long) BTRFS_LEAF_DATA_SIZE(root), - leaf_space_used(leaf, 0, nritems), nritems); + printk("leaf free space ret %d, leaf data size %u, used %d nritems %d\n", + ret, nodesize, leaf_space_used(leaf, 0, nritems), + nritems); } return ret; } |