path: root/utils.c
diff options
authorJosef Bacik <>2012-07-27 08:37:55 -0400
committerDavid Sterba <>2012-10-02 13:02:48 +0200
commit605e806166847872bb91831b397d58f95027975a (patch)
tree94032f0e981816e4d36a74003abb5d7c757cd226 /utils.c
parent45e9ec733deb73672c9bae3b1adf50f44bc8ae0c (diff)
Btrfs-progs: only enforce a maximum size if we specify one
My patch 04609add88ef8428d725de6ef60f46a3ff0dbc8e introduced a regression where if you mkfs'ed a group of disks with different sizes it limited the disks to the size of the first one that is specified. This was not the intent of my patch, I only want it to limit the size based on the -b option, so I've reworked the code to pass in a max block count and that fixes the issue. Thanks, Signed-off-by: Josef Bacik <>
Diffstat (limited to 'utils.c')
1 files changed, 3 insertions, 9 deletions
diff --git a/utils.c b/utils.c
index cfe7c49f..aebe8e5f 100644
--- a/utils.c
+++ b/utils.c
@@ -537,13 +537,7 @@ int btrfs_add_to_fsid(struct btrfs_trans_handle *trans,
int btrfs_prepare_device(int fd, char *file, int zero_end, u64 *block_count_ret,
- int *mixed)
- /* discard by default when called from 'device add' */
- return __btrfs_prepare_device(fd, file, zero_end, block_count_ret, mixed, 0);
-int __btrfs_prepare_device(int fd, char *file, int zero_end, u64 *block_count_ret,
- int *mixed, int nodiscard)
+ u64 max_block_count, int *mixed, int nodiscard)
u64 block_count;
u64 bytenr;
@@ -561,8 +555,8 @@ int __btrfs_prepare_device(int fd, char *file, int zero_end, u64 *block_count_re
fprintf(stderr, "unable to find %s size\n", file);
- if (*block_count_ret)
- block_count = min(block_count, *block_count_ret);
+ if (max_block_count)
+ block_count = min(block_count, max_block_count);
zero_end = 1;
if (block_count < 1024 * 1024 * 1024 && !(*mixed)) {