aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@kernel.org>2020-12-17 09:52:01 -0800
committerJaegeuk Kim <jaegeuk@kernel.org>2020-12-23 11:32:32 -0800
commit316e128fe3dc380ca8d5943f00d03dc6c66a9902 (patch)
treeda693fcc6ed2ebd40d4040db3391ebaa3174d1b0
parentcc57f2c7da222fd8ddf607e82ad3c19736d71757 (diff)
downloadf2fs-tools-316e128fe3dc380ca8d5943f00d03dc6c66a9902.tar.gz
mkfs.f2fs: adjust zone alignment when using multi-partitions
When formatting conventional partition with zoned one, we should align the starting block address of next device to the zone size. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--mkfs/f2fs_format.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index a6c542e..f60dcc0 100644
--- a/mkfs/f2fs_format.c
+++ b/mkfs/f2fs_format.c
@@ -254,14 +254,22 @@ static int f2fs_prepare_super_block(void)
return -1;
}
+ if (c.zoned_mode && c.ndevs > 1)
+ zone_align_start_offset +=
+ (c.devices[0].total_sectors * c.sector_size) % zone_size_bytes;
+
set_sb(segment0_blkaddr, zone_align_start_offset / blk_size_bytes);
sb->cp_blkaddr = sb->segment0_blkaddr;
MSG(0, "Info: zone aligned segment0 blkaddr: %u\n",
get_sb(segment0_blkaddr));
- if (c.zoned_mode && (get_sb(segment0_blkaddr) + c.start_sector /
- DEFAULT_SECTORS_PER_BLOCK) % c.zone_blocks) {
+ 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;