[PATCH] erofs-utils: mkfs: Add volume-name setting support
Gao Xiang
xiang at kernel.org
Wed Oct 5 03:49:23 AEDT 2022
On Wed, Oct 05, 2022 at 01:43:24AM +0900, Naoto Yamaguchi wrote:
> The erofs_super_block has volume_name field. On the other hand,
> mkfs.erofs is not supporting to set volume name.
> This patch add volume-name setting support to mkfs.erofs.
> Option keyword is similar to mkfs.vfat.
>
> usage:
> mkfs.erofs -n volume-name image-fn dir
>
commit message is not updated... also it'd be better to bump
up the patch version in the subject line like:
[PATCH v2] erofs-utils: mkfs: ...
> Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi at aisin.co.jp>
> ---
> include/erofs/internal.h | 1 +
> man/mkfs.erofs.1 | 5 +++++
> mkfs/main.c | 13 ++++++++++++-
> 3 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/include/erofs/internal.h b/include/erofs/internal.h
> index 2e0aae8..7dc42eb 100644
> --- a/include/erofs/internal.h
> +++ b/include/erofs/internal.h
> @@ -92,6 +92,7 @@ struct erofs_sb_info {
> u64 inos;
>
> u8 uuid[16];
> + char volume_name[16];
>
> u16 available_compr_algs;
> u16 lz4_max_distance;
> diff --git a/man/mkfs.erofs.1 b/man/mkfs.erofs.1
> index 11e8323..b65d01b 100644
> --- a/man/mkfs.erofs.1
> +++ b/man/mkfs.erofs.1
> @@ -66,6 +66,11 @@ Pack the tail part (pcluster) of compressed files into its metadata to save
> more space and the tail part I/O. (Linux v5.17+)
> .RE
> .TP
> +.BI "\-L " volume-label
> +Set the volume label for the filesystem to
> +.IR volume-label .
> +The maximum length of the volume label is 16 bytes.
> +.TP
> .BI "\-T " #
> Set all files to the given UNIX timestamp. Reproducible builds requires setting
> all to a specific one.
> diff --git a/mkfs/main.c b/mkfs/main.c
> index 594ecf9..08a4215 100644
> --- a/mkfs/main.c
> +++ b/mkfs/main.c
> @@ -84,6 +84,7 @@ static void usage(void)
> " -zX[,Y] X=compressor (Y=compression level, optional)\n"
> " -C# specify the size of compress physical cluster in bytes\n"
> " -EX[,...] X=extended options\n"
> + " -L volume-label set the volume label (max 16 bytes).\n"
Not aligned here.
> " -T# set a fixed UNIX timestamp # to all files\n"
> #ifdef HAVE_LIBUUID
> " -UX use a given filesystem UUID\n"
> @@ -212,7 +213,7 @@ static int mkfs_parse_options_cfg(int argc, char *argv[])
> int opt, i;
> bool quiet = false;
>
> - while ((opt = getopt_long(argc, argv, "C:E:T:U:d:x:z:",
> + while ((opt = getopt_long(argc, argv, "C:E:L:T:U:d:x:z:",
> long_options, NULL)) != -1) {
> switch (opt) {
> case 'z':
> @@ -255,6 +256,15 @@ static int mkfs_parse_options_cfg(int argc, char *argv[])
> if (opt)
> return opt;
> break;
> +
> + case 'L':
> + if (optarg == NULL || strlen(optarg) > 16) {
sizeof(sbi.volume_name);
> + erofs_err("invalid volume label");
> + return -EINVAL;
> + }
> + strncpy(sbi.volume_name, optarg, 16);
sizeof(sbi.volume_name)?
Thanks,
Gao Xiang
> + break;
> +
> case 'T':
> cfg.c_unix_timestamp = strtoull(optarg, &endptr, 0);
> if (cfg.c_unix_timestamp == -1 || *endptr != '\0') {
> @@ -483,6 +493,7 @@ int erofs_mkfs_update_super_block(struct erofs_buffer_head *bh,
> sb.blocks = cpu_to_le32(*blocks);
> sb.root_nid = cpu_to_le16(root_nid);
> memcpy(sb.uuid, sbi.uuid, sizeof(sb.uuid));
> + memcpy(sb.volume_name, sbi.volume_name, sizeof(sb.volume_name));
>
> if (erofs_sb_has_compr_cfgs())
> sb.u1.available_compr_algs = sbi.available_compr_algs;
> --
> 2.25.1
>
More information about the Linux-erofs
mailing list