mirror of
https://gitee.com/openharmony/third_party_f2fs-tools
synced 2024-12-04 09:03:48 +00:00
f2fs-tools: fix metadata region overlap with zoned block device zones
For a volume using a zoned block device without conventional zones (e.g. a NVMe ZNS drive), a regular block device must be used to store metadata so that in-place metadata writes can be executed. The zoned block device cannot contain any metadata blocks requiring in-place update (e.g. bitmap blocks). When formatting a volume that contains host managed zoned block devices, make sure that the conventional device used to store metadata is large enough to avoid write errors. Signed-off-by: Aravind Ramesh <aravind.ramesh@wdc.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
f3b93bf5b8
commit
e01ad31081
@ -440,6 +440,21 @@ static int f2fs_prepare_super_block(void)
|
|||||||
main_blkzone);
|
main_blkzone);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Check if conventional device has enough space
|
||||||
|
* to accommodate all metadata, zoned device should
|
||||||
|
* not overlap to metadata area.
|
||||||
|
*/
|
||||||
|
for (i = 1; i < c.ndevs; i++) {
|
||||||
|
if (c.devices[i].zoned_model == F2FS_ZONED_HM &&
|
||||||
|
c.devices[i].start_blkaddr < get_sb(main_blkaddr)) {
|
||||||
|
MSG(0, "\tError: Conventional device %s is too small,"
|
||||||
|
" (%"PRIu64" MiB needed).\n", c.devices[0].path,
|
||||||
|
(get_sb(main_blkaddr) -
|
||||||
|
c.devices[i].start_blkaddr) >> 8);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
total_zones = get_sb(segment_count) / (c.segs_per_zone) -
|
total_zones = get_sb(segment_count) / (c.segs_per_zone) -
|
||||||
|
Loading…
Reference in New Issue
Block a user