]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - fs/btrfs/ctree.c
Btrfs: add check for changed leaves in setup_leaf_for_split
[net-next-2.6.git] / fs / btrfs / ctree.c
index c4bc570a396eebf5ede775dc39b004c9ff493227..babf7fbaec8484217393a94b2920e0f4c7b0aae7 100644 (file)
@@ -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);