Should check after c.devices[1].start_blkaddr is assigned
if c.ndevs > 1.
Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
---
mkfs/f2fs_format.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index 52a1e18..f7cfa5e 100644
--- a/mkfs/f2fs_format.c
+++ b/mkfs/f2fs_format.c
@@ -339,17 +339,6 @@ static int f2fs_prepare_super_block(void)
MSG(0, "Info: zone aligned segment0 blkaddr: %u\n",
get_sb(segment0_blkaddr));
- if (c.zoned_mode &&
- ((c.ndevs == 1 &&
- (get_sb(segment0_blkaddr) + c.start_sector /
- DEFAULT_SECTORS_PER_BLOCK) % c.zone_blocks) ||
- (c.ndevs > 1 &&
- c.devices[1].start_blkaddr % c.zone_blocks))) {
- MSG(1, "\tError: Unaligned segment0 block address %u\n",
- get_sb(segment0_blkaddr));
- return -1;
- }
-
for (i = 0; i < c.ndevs; i++) {
if (i == 0) {
c.devices[i].total_segments =
@@ -390,6 +379,18 @@ static int f2fs_prepare_super_block(void)
c.total_segments += c.devices[i].total_segments;
}
+
+ if (c.zoned_mode &&
+ ((c.ndevs == 1 &&
+ (get_sb(segment0_blkaddr) + c.start_sector /
+ DEFAULT_SECTORS_PER_BLOCK) % c.zone_blocks) ||
+ (c.ndevs > 1 &&
+ c.devices[1].start_blkaddr % c.zone_blocks))) {
+ MSG(1, "\tError: Unaligned segment0 block address %u\n",
+ get_sb(segment0_blkaddr));
+ return -1;
+ }
+
set_sb(segment_count, c.total_segments);
set_sb(segment_count_ckpt, F2FS_NUMBER_OF_CHECKPOINT_PACK);
--
1.9.1