From 167d95b06571bb9c2329c0eb47e4af27661ba9c5 Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Fri, 4 Jan 2013 15:39:43 -0500 Subject: [PATCH] --- yaml --- r: 360469 b: refs/heads/master c: 8de972b4faa4be9b2a3c53103e18d86092a5da45 h: refs/heads/master i: 360467: 915e35db337a21129ecec3b88319df44eb66ca98 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/extent-tree.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 41a9bfcca36e..66fb6df34081 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6ac0f4884eaad28441c6e0f9d1400a08c2149049 +refs/heads/master: 8de972b4faa4be9b2a3c53103e18d86092a5da45 diff --git a/trunk/fs/btrfs/extent-tree.c b/trunk/fs/btrfs/extent-tree.c index 3345f68fc64b..f13402104c96 100644 --- a/trunk/fs/btrfs/extent-tree.c +++ b/trunk/fs/btrfs/extent-tree.c @@ -5715,6 +5715,7 @@ static noinline int find_free_extent(struct btrfs_trans_handle *trans, * lets look there */ if (last_ptr) { + unsigned long aligned_cluster; /* * the refill lock keeps out other * people trying to start a new cluster @@ -5781,11 +5782,15 @@ static noinline int find_free_extent(struct btrfs_trans_handle *trans, goto unclustered_alloc; } + aligned_cluster = max_t(unsigned long, + empty_cluster + empty_size, + block_group->full_stripe_len); + /* allocate a cluster in this block group */ ret = btrfs_find_space_cluster(trans, root, block_group, last_ptr, search_start, num_bytes, - empty_cluster + empty_size); + aligned_cluster); if (ret == 0) { /* * now pull our allocation out of this