From 3b780e77cfd8b88d87815f7c11a12aa9e3ac88c4 Mon Sep 17 00:00:00 2001 From: Sheng Yong Date: Wed, 10 Apr 2024 20:38:48 +0800 Subject: [PATCH] mkfs.f2fs: align each device to zone size For multiple device, each device should be aligned to zone size, instead of aligning the total size. Signed-off-by: Sheng Yong Signed-off-by: Jaegeuk Kim --- mkfs/f2fs_format.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c index e26a513e..c9d335a1 100644 --- a/mkfs/f2fs_format.c +++ b/mkfs/f2fs_format.c @@ -296,17 +296,19 @@ static int f2fs_prepare_super_block(void) for (i = 0; i < c.ndevs; i++) { if (i == 0) { c.devices[i].total_segments = - (c.devices[i].total_sectors * + ((c.devices[i].total_sectors * c.sector_size - zone_align_start_offset) / - segment_size_bytes; + segment_size_bytes) / c.segs_per_zone * + c.segs_per_zone; c.devices[i].start_blkaddr = 0; c.devices[i].end_blkaddr = c.devices[i].total_segments * c.blks_per_seg - 1 + sb->segment0_blkaddr; } else { c.devices[i].total_segments = - c.devices[i].total_sectors / - (c.sectors_per_blk * c.blks_per_seg); + (c.devices[i].total_sectors / + (c.sectors_per_blk * c.blks_per_seg)) / + c.segs_per_zone * c.segs_per_zone; c.devices[i].start_blkaddr = c.devices[i - 1].end_blkaddr + 1; c.devices[i].end_blkaddr = c.devices[i].start_blkaddr + @@ -321,8 +323,7 @@ static int f2fs_prepare_super_block(void) c.total_segments += c.devices[i].total_segments; } - set_sb(segment_count, (c.total_segments / c.segs_per_zone * - c.segs_per_zone)); + set_sb(segment_count, c.total_segments); set_sb(segment_count_ckpt, F2FS_NUMBER_OF_CHECKPOINT_PACK); set_sb(sit_blkaddr, get_sb(segment0_blkaddr) +