summaryrefslogtreecommitdiff
path: root/cmd_migrate.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-11-06 20:47:48 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-11-06 20:47:48 -0500
commit469e8eb008ebbe7fa7924dd20cfa8af32cb7008c (patch)
tree962dd7c799d7682c7b5a564909c9953f5948b030 /cmd_migrate.c
parenta0371350efecbc09ca24864a414eee2d7c691c34 (diff)
Avoiding picking different bucket sizes for different devices
Erasure coding can't create stripes across devices with different bucket sizes - therefore, format shouldn't pick different bucket sizes for different devices. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'cmd_migrate.c')
-rw-r--r--cmd_migrate.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/cmd_migrate.c b/cmd_migrate.c
index f82dd618..cde1fce4 100644
--- a/cmd_migrate.c
+++ b/cmd_migrate.c
@@ -677,7 +677,11 @@ static int migrate_fs(const char *fs_path,
printf("Creating new filesystem on %s in space reserved at %s\n",
dev.path, file_path);
- bch2_pick_bucket_size(fs_opts, &dev);
+ dev.size = get_size(dev.bdev->bd_buffered_fd);
+ dev.bucket_size = bch2_pick_bucket_size(fs_opts, &dev);
+ dev.nbuckets = dev.size / dev.bucket_size;
+
+ bch2_check_bucket_size(fs_opts, &dev);
u64 bcachefs_inum;
ranges extents = reserve_new_fs_space(file_path,