From 854437ca3c228d8ab3eb24d2efc1c21b5d56a635 Mon Sep 17 00:00:00 2001 From: Qu Wenruo Date: Thu, 23 Jul 2015 17:18:09 +0800 Subject: btrfs-progs: extent-tree: avoid allocating tree block that crosses stripe boundary Now find_free_extent() function won't return a metadata extent that crosses stripe boundary. Reported-by: Chris Murphy Reported-by: Zhao Lei Signed-off-by: Zhao Lei Signed-off-by: Qu Wenruo Signed-off-by: David Sterba --- extent-tree.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'extent-tree.c') diff --git a/extent-tree.c b/extent-tree.c index ac582e05..6f07e4b4 100644 --- a/extent-tree.c +++ b/extent-tree.c @@ -2605,6 +2605,11 @@ check_failed: } if (!(data & BTRFS_BLOCK_GROUP_DATA)) { + if (check_crossing_stripes(ins->objectid, num_bytes)) { + search_start = round_down(ins->objectid + num_bytes, + BTRFS_STRIPE_LEN); + goto new_group; + } block_group = btrfs_lookup_block_group(info, ins->objectid); if (block_group) trans->block_group = block_group; -- cgit v1.2.3