summaryrefslogtreecommitdiff
path: root/c_src
diff options
context:
space:
mode:
authorAngelo Bulfone <boomshroom@users.noreply.github.com>2025-08-21 21:22:08 -0700
committerGitHub <noreply@github.com>2025-08-21 21:22:08 -0700
commit5747daac9d9e05ba1fa0ad199d23e5ddfec1a15c (patch)
treeefdaf61de17af7a63759d32006cbc4e552d55954 /c_src
parent5884bfc548d72288797b92adf1e3549ff3425a54 (diff)
Allow block sizes smaller than backing medium
Diffstat (limited to 'c_src')
-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)