summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--c_src/libbcachefs.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/c_src/libbcachefs.c b/c_src/libbcachefs.c
index a7fc572a..ed84be1b 100644
--- a/c_src/libbcachefs.c
+++ b/c_src/libbcachefs.c
@@ -201,18 +201,20 @@ struct bch_sb *bch2_format(struct bch_opt_strs fs_opt_strs,
dev_opts_list devs)
{
struct bch_sb_handle sb = { NULL };
- unsigned max_dev_block_size = 0;
-
- darray_for_each(devs, i)
- max_dev_block_size = max(max_dev_block_size, get_blocksize(i->bdev->bd_fd));
/* calculate block size: */
- if (!opt_defined(fs_opts, block_size))
+ if (!opt_defined(fs_opts, block_size)) {
+ unsigned max_dev_block_size = 0;
+
+ darray_for_each(devs, i)
+ max_dev_block_size = max(max_dev_block_size, get_blocksize(i->bdev->bd_fd));
+
opt_set(fs_opts, block_size, max_dev_block_size);
+ }
- if (fs_opts.block_size < max_dev_block_size)
- die("blocksize too small: %u, must be greater than device blocksize %u",
- fs_opts.block_size, max_dev_block_size);
+ if (fs_opts.block_size < 512)
+ die("blocksize too small: %u, must be greater than one sector (512 bytes)",
+ fs_opts.block_size);
/* get device size, if it wasn't specified: */
darray_for_each(devs, i)