Hello Kim,

Could you please pull this ? 
I will send a v2 if any review comments are there, please let me know.

Thanks,
Aravind

> -----Original Message-----
> From: Aravind Ramesh <[email protected]>
> Sent: Thursday, June 17, 2021 12:56 AM
> To: [email protected]
> Cc: [email protected]; Aravind Ramesh <[email protected]>
> Subject: [f2fs-dev] [PATCH] 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 <[email protected]>
> ---
>  mkfs/f2fs_format.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c index 3565bd3..2132852
> 100644
> --- a/mkfs/f2fs_format.c
> +++ b/mkfs/f2fs_format.c
> @@ -440,6 +440,21 @@ static int f2fs_prepare_super_block(void)
>                                       main_blkzone);
>                       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) -
> --
> 2.25.1



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to