diff options
author | Ingo Molnar <mingo@elte.hu> | 2010-04-08 13:36:36 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-04-08 13:37:18 +0200 |
commit | ca7e0c612005937a4a5a75d3fed90459993de65c (patch) | |
tree | b574fc0f0189b52ffc87ba20c418228db556faa1 /fs/btrfs/ctree.c | |
parent | 8141d0050d76e5695011b5ab577ec66fb51a998c (diff) | |
parent | f5284e7635787224dda1a2bf82a4c56b1c75671f (diff) |
Merge branch 'linus' into perf/core
Semantic conflict: arch/x86/kernel/cpu/perf_event_intel_ds.c
Merge reason: pick up latest fixes, fix the conflict
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'fs/btrfs/ctree.c')
-rw-r--r-- | fs/btrfs/ctree.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index c4bc570a396..6795a713b20 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -17,6 +17,7 @@ */ #include <linux/sched.h> +#include <linux/slab.h> #include "ctree.h" #include "disk-io.h" #include "transaction.h" @@ -3040,6 +3041,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); |