diff options
author | Angelo Bulfone <boomshroom@users.noreply.github.com> | 2025-08-21 21:22:08 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-21 21:22:08 -0700 |
commit | 5747daac9d9e05ba1fa0ad199d23e5ddfec1a15c (patch) | |
tree | efdaf61de17af7a63759d32006cbc4e552d55954 /c_src | |
parent | 5884bfc548d72288797b92adf1e3549ff3425a54 (diff) |
Allow block sizes smaller than backing medium
Diffstat (limited to 'c_src')
-rw-r--r-- | c_src/libbcachefs.c | 18 |
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) |