Răsfoiți Sursa

Btrfs: Fix split_leaf to avoid incorrect double splits

Signed-off-by: Chris Mason <chris.mason@oracle.com>
Chris Mason 17 ani în urmă
părinte
comite
5ee78ac70f
1 a modificat fișierele cu 5 adăugiri și 1 ștergeri
  1. 5 1
      fs/btrfs/ctree.c

+ 5 - 1
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;