mirror of
https://github.com/kdave/btrfs-progs
synced 2024-12-25 23:52:17 +00:00
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>
This commit is contained in:
parent
fa2dcf1406
commit
e8a5f57b69
9
ctree.c
9
ctree.c
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user