summaryrefslogtreecommitdiff
path: root/cmd_migrate.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd_migrate.c')
-rw-r--r--cmd_migrate.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/cmd_migrate.c b/cmd_migrate.c
index 0beebc9c..a0d27427 100644
--- a/cmd_migrate.c
+++ b/cmd_migrate.c
@@ -599,7 +599,9 @@ static void copy_fs(struct bch_fs *c, int src_fd, const char *src_path,
bch2_alloc_write(c, false);
}
-static void find_superblock_space(ranges extents, struct dev_opts *dev)
+static void find_superblock_space(ranges extents,
+ struct format_opts opts,
+ struct dev_opts *dev)
{
struct range *i;
@@ -609,9 +611,10 @@ static void find_superblock_space(ranges extents, struct dev_opts *dev)
u64 end = round_down(i->end,
dev->bucket_size << 9);
- if (start + (128 << 10) <= end) {
+ /* Need space for two superblocks: */
+ if (start + (opts.superblock_size << 9) * 2 <= end) {
dev->sb_offset = start >> 9;
- dev->sb_end = dev->sb_offset + 256;
+ dev->sb_end = dev->sb_offset + opts.superblock_size * 2;
return;
}
}
@@ -673,7 +676,7 @@ static int migrate_fs(const char *fs_path,
get_size(dev.path, dev.fd) / 5,
&bcachefs_inum, stat.st_dev, force);
- find_superblock_space(extents, &dev);
+ find_superblock_space(extents, format_opts, &dev);
struct bch_sb *sb = bch2_format(fs_opt_strs,
fs_opts,format_opts, &dev, 1);