diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2020-12-17 09:52:01 -0800 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2020-12-23 11:32:32 -0800 |
commit | 316e128fe3dc380ca8d5943f00d03dc6c66a9902 (patch) | |
tree | da693fcc6ed2ebd40d4040db3391ebaa3174d1b0 | |
parent | cc57f2c7da222fd8ddf607e82ad3c19736d71757 (diff) | |
download | f2fs-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.c | 12 |
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; |