summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/ctree.c
diff options
context:
space:
mode:
authorChris Mason2007-10-19 20:01:21 +0200
committerChris Mason2008-09-25 17:03:57 +0200
commit5ee78ac70f6c01f2a5acf662c2af975665710edc (patch)
treeb6359b9df3d436a87853e84fed6a88fbb3aeb6d6 /fs/btrfs/ctree.c
parentBtrfs: Avoid recursive KM_USER1 mappings in copy_extent_buffer (diff)
downloadkernel-qcow2-linux-5ee78ac70f6c01f2a5acf662c2af975665710edc.tar.gz
kernel-qcow2-linux-5ee78ac70f6c01f2a5acf662c2af975665710edc.tar.xz
kernel-qcow2-linux-5ee78ac70f6c01f2a5acf662c2af975665710edc.zip
Btrfs: Fix split_leaf to avoid incorrect double splits
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/ctree.c')
-rw-r--r--fs/btrfs/ctree.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
index e8466940fa30..53e40b5c084d 100644
--- a/fs/btrfs/ctree.c
+++ b/fs/btrfs/ctree.c
@@ -1865,7 +1865,11 @@ static int split_leaf(struct btrfs_trans_handle *trans, struct btrfs_root
return ret;
}
mid = slot;
- double_split = 1;
+ if (mid != nritems &&
+ leaf_space_used(l, mid, nritems - mid) +
+ space_needed > BTRFS_LEAF_DATA_SIZE(root)) {
+ double_split = 1;
+ }
}
}
nritems = nritems - mid;