]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - fs/btrfs/ctree.c
Merge branch 'for-chris-4.11-part2' of git://git.kernel.org/pub/scm/linux/kernel...
[mirror_ubuntu-artful-kernel.git] / fs / btrfs / ctree.c
index 2c3c943bfcdc8d24b63be190f33d8abf9f800f75..7dc8844037e03b7cfb738d81af6c22b33ee2b31d 100644 (file)
@@ -4157,6 +4157,9 @@ static noinline int push_for_double_split(struct btrfs_trans_handle *trans,
 
        /* try to push all the items before our slot into the next leaf */
        slot = path->slots[0];
+       space_needed = data_size;
+       if (slot > 0)
+               space_needed -= btrfs_leaf_free_space(fs_info, path->nodes[0]);
        ret = push_leaf_left(trans, root, path, 1, space_needed, 0, slot);
        if (ret < 0)
                return ret;
@@ -4212,6 +4215,10 @@ static noinline int split_leaf(struct btrfs_trans_handle *trans,
                if (wret < 0)
                        return wret;
                if (wret) {
+                       space_needed = data_size;
+                       if (slot > 0)
+                               space_needed -= btrfs_leaf_free_space(fs_info,
+                                                                     l);
                        wret = push_leaf_left(trans, root, path, space_needed,
                                              space_needed, 0, (u32)-1);
                        if (wret < 0)