From c2f9a09dd602cf6ebbcbc5ffb5cae96af26cde00 Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Fri, 2 Apr 2010 09:20:18 -0400 Subject: [PATCH] --- yaml --- r: 189474 b: refs/heads/master c: 109f6aef5fc436f355ad027f4d97bd696df2049a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/ctree.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index dfb91bbe5a88..03a76431a7b0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6bdb72ded1e281cd8844918c39d00cdd0e59f655 +refs/heads/master: 109f6aef5fc436f355ad027f4d97bd696df2049a diff --git a/trunk/fs/btrfs/ctree.c b/trunk/fs/btrfs/ctree.c index c4bc570a396e..babf7fbaec84 100644 --- a/trunk/fs/btrfs/ctree.c +++ b/trunk/fs/btrfs/ctree.c @@ -3040,6 +3040,10 @@ static noinline int setup_leaf_for_split(struct btrfs_trans_handle *trans, if (ret > 0 || item_size != btrfs_item_size_nr(leaf, path->slots[0])) goto err; + /* the leaf has changed, it now has room. return now */ + if (btrfs_leaf_free_space(root, path->nodes[0]) >= ins_len) + goto err; + if (key.type == BTRFS_EXTENT_DATA_KEY) { fi = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_file_extent_item);