瀏覽代碼

Btrfs: fix chunk allocate size calculation

If the amount of free space left in a device is less than what we think should
be the minimum size, just ignore the minimum size and use the amount we have.  I
ran into this running tests on a 600mb volume, the chunk allocator wouldn't let
me allocate the last 52mb of the disk for data because we want to have at least
64mb chunks for data.  This patch fixes that problem.  Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Josef Bacik 15 年之前
父節點
當前提交
0cad8a1130
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      fs/btrfs/volumes.c

+ 3 - 1
fs/btrfs/volumes.c

@@ -2244,8 +2244,10 @@ again:
 		do_div(calc_size, stripe_len);
 		do_div(calc_size, stripe_len);
 		calc_size *= stripe_len;
 		calc_size *= stripe_len;
 	}
 	}
+
 	/* we don't want tiny stripes */
 	/* we don't want tiny stripes */
-	calc_size = max_t(u64, min_stripe_size, calc_size);
+	if (!looped)
+		calc_size = max_t(u64, min_stripe_size, calc_size);
 
 
 	do_div(calc_size, stripe_len);
 	do_div(calc_size, stripe_len);
 	calc_size *= stripe_len;
 	calc_size *= stripe_len;