From ea1e086e6591c15f6f0cbff6ef940b854fb866f8 Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Mon, 15 Oct 2012 13:43:18 -0400 Subject: [PATCH] --- yaml --- r: 346745 b: refs/heads/master c: 41be1f3b40b87de33cd2e7463dce88596dbdccc4 h: refs/heads/master i: 346743: b33c1f53925f778b0e7e5176f36ba6bb585cfb03 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/ctree.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 8e1c6a02d605..2c5a04a10be4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ad9145596986b672d8c8235c92ed5307f82d045d +refs/heads/master: 41be1f3b40b87de33cd2e7463dce88596dbdccc4 diff --git a/trunk/fs/btrfs/ctree.c b/trunk/fs/btrfs/ctree.c index e8b32641ea90..e7bea1d5f75f 100644 --- a/trunk/fs/btrfs/ctree.c +++ b/trunk/fs/btrfs/ctree.c @@ -3298,14 +3298,21 @@ static noinline int split_node(struct btrfs_trans_handle *trans, */ static int leaf_space_used(struct extent_buffer *l, int start, int nr) { + struct btrfs_item *start_item; + struct btrfs_item *end_item; + struct btrfs_map_token token; int data_len; int nritems = btrfs_header_nritems(l); int end = min(nritems, start + nr) - 1; if (!nr) return 0; - data_len = btrfs_item_end_nr(l, start); - data_len = data_len - btrfs_item_offset_nr(l, end); + btrfs_init_map_token(&token); + start_item = btrfs_item_nr(l, start); + end_item = btrfs_item_nr(l, end); + data_len = btrfs_token_item_offset(l, start_item, &token) + + btrfs_token_item_size(l, start_item, &token); + data_len = data_len - btrfs_token_item_offset(l, end_item, &token); data_len += sizeof(struct btrfs_item) * nr; WARN_ON(data_len < 0); return data_len;