diff mbox series

[f2fs-dev] mkfs.f2fs: align each device to zone size

Message ID 20240410123848.1291821-1-shengyong@oppo.com (mailing list archive)
State New
Headers show
Series [f2fs-dev] mkfs.f2fs: align each device to zone size | expand

Commit Message

Sheng Yong April 10, 2024, 12:38 p.m. UTC
For multiple device, each device should be aligned to zone size, instead
of aligning the total size.

Signed-off-by: Sheng Yong <shengyong@oppo.com>
---
 mkfs/f2fs_format.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

Comments

Chao Yu April 30, 2024, 1:04 a.m. UTC | #1
On 2024/4/10 20:38, Sheng Yong wrote:
> For multiple device, each device should be aligned to zone size, instead
> of aligning the total size.
> 
> Signed-off-by: Sheng Yong <shengyong@oppo.com>

Reviewed-by: Chao Yu <chao@kernel.org>

Thanks,
diff mbox series

Patch

diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index 8f632f8..9e1b0d6 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) +