[PATCH] erofs-utils: mkfs: support flatdev for multi-blob images

Gao Xiang hsiangkao at linux.alibaba.com
Fri Sep 15 16:35:59 AEST 2023



On 2023/9/15 14:27, Jingbo Xu wrote:
> Since kernel commit 8b465fecc35a ("erofs: support flattened block device
> for multi-blob images"), flatdev feature is introduced to support for
> mounting multi-blobs container image as a single block device.
> 
> Introduce "-Eflatdev" option to generate images in flatdev mode.

Why need introducing such an option

mapped_blkaddr cannot be filled/fixed up all the time?

> Currently this can only work with rebuild mode, where the device tag is
> filled with the uuid of the corresponding source image.

...


> +	if (cfg.c_flatdev && !rebuild_mode) {
> +		erofs_err("--flatdev is supported only in rebuild mode currently");

I don't think we need this, all multiple device mode can use this.


> +		return -EINVAL;
> +	}
> +
>   	if (cfg.c_compr_alg[0] && erofs_blksiz(&sbi) != getpagesize())
>   		erofs_warn("Please note that subpage blocksize with compression isn't yet supported in kernel. "
>   			   "This compressed image will only work with bs = ps = %u bytes",
> @@ -765,8 +774,15 @@ static void erofs_mkfs_default_options(void)
>   	sbi.feature_compat = EROFS_FEATURE_COMPAT_SB_CHKSUM |
>   			     EROFS_FEATURE_COMPAT_MTIME;
>   
> -	/* generate a default uuid first */
> -	erofs_uuid_generate(sbi.uuid);
> +	/*
> +	 * Generate a default uuid first.  In rebuild mode the uuid of the
> +	 * source image is used as the device slot's tag.  The kernel will
> +	 * identify the tag as empty and fail the mount if its first byte is
> +	 * zero.  Apply this constraint to uuid to work around it.
> +	 */
> +	do {
> +		erofs_uuid_generate(sbi.uuid);
> +	} while (!sbi.uuid[0]);

why need a loop here?

>   }

Thanks,
Gao Xiang



More information about the Linux-erofs mailing list