Messages in this thread | | | Date | Thu, 1 Sep 2022 11:45:01 +0800 | Subject | Re: [External] Re: [RFC PATCH 1/5] erofs: add 'domain_id' mount option for on-demand read sementics | From | Jia Zhu <> |
| |
在 2022/9/1 11:31, Gao Xiang 写道: > On Wed, Aug 31, 2022 at 08:31:21PM +0800, Jia Zhu wrote: >> Introduce 'domain_id' mount option to enable shared domain sementics. >> In which case, the related cookie is shared if two mountpoints in the >> same domain have the same data blob. Users could specify the name of >> domain by this mount option. >> >> Signed-off-by: Jia Zhu <zhujia.zj@bytedance.com> >> --- >> fs/erofs/internal.h | 1 + >> fs/erofs/super.c | 17 +++++++++++++++++ >> 2 files changed, 18 insertions(+) >> >> diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h >> index cfee49d33b95..fe435d077f1a 100644 >> --- a/fs/erofs/internal.h >> +++ b/fs/erofs/internal.h >> @@ -76,6 +76,7 @@ struct erofs_mount_opts { >> #endif >> unsigned int mount_opt; >> char *fsid; >> + char *domain_id; >> }; >> >> struct erofs_dev_context { >> diff --git a/fs/erofs/super.c b/fs/erofs/super.c >> index 3173debeaa5a..fb5a84a07bd5 100644 >> --- a/fs/erofs/super.c >> +++ b/fs/erofs/super.c >> @@ -440,6 +440,7 @@ enum { >> Opt_dax_enum, >> Opt_device, >> Opt_fsid, >> + Opt_domain_id, >> Opt_err >> }; >> >> @@ -465,6 +466,7 @@ static const struct fs_parameter_spec erofs_fs_parameters[] = { >> fsparam_enum("dax", Opt_dax_enum, erofs_dax_param_enums), >> fsparam_string("device", Opt_device), >> fsparam_string("fsid", Opt_fsid), >> + fsparam_string("domain_id", Opt_domain_id), >> {} >> }; >> >> @@ -568,6 +570,16 @@ static int erofs_fc_parse_param(struct fs_context *fc, >> return -ENOMEM; >> #else >> errorfc(fc, "fsid option not supported"); >> +#endif >> + break; >> + case Opt_domain_id: >> + kfree(ctx->opt.domain_id); >> + ctx->opt.domain_id = kstrdup(param->string, GFP_KERNEL); >> + if (!ctx->opt.domain_id) >> + return -ENOMEM; >> +#ifdef CONFIG_EROFS_FS_ONDEMAND >> +#else >> + errorfc(fc, "domain_id option not supported"); > > Just one question, why not write as below? > > #ifdef CONFIG_EROFS_FS_ONDEMAND > kfree(ctx->opt.domain_id); > ctx->opt.domain_id = kstrdup(param->string, GFP_KERNEL); > if (!ctx->opt.domain_id) > return -ENOMEM; > #else > errorfc(fc, "domain_id option not supported"); > #endif > > Thanks, > Gao Xiang > Thanks for catching this. Maybe something went wrong when I split the patch. I'll fix it in next version.
Thanks, Zhu Jia >> #endif >> break; >> default: >> @@ -695,6 +707,7 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) >> sb->s_fs_info = sbi; >> sbi->opt = ctx->opt; >> ctx->opt.fsid = NULL; >> + ctx->opt.domain_id = NULL; >> sbi->devs = ctx->devs; >> ctx->devs = NULL; >> >> @@ -838,6 +851,7 @@ static void erofs_fc_free(struct fs_context *fc) >> >> erofs_free_dev_context(ctx->devs); >> kfree(ctx->opt.fsid); >> + kfree(ctx->opt.domain_id); >> kfree(ctx); >> } >> >> @@ -892,6 +906,7 @@ static void erofs_kill_sb(struct super_block *sb) >> erofs_fscache_unregister_cookie(&sbi->s_fscache); >> erofs_fscache_unregister_fs(sb); >> kfree(sbi->opt.fsid); >> + kfree(sbi->opt.domain_id); >> kfree(sbi); >> sb->s_fs_info = NULL; >> } >> @@ -1044,6 +1059,8 @@ static int erofs_show_options(struct seq_file *seq, struct dentry *root) >> #ifdef CONFIG_EROFS_FS_ONDEMAND >> if (opt->fsid) >> seq_printf(seq, ",fsid=%s", opt->fsid); >> + if (opt->domain_id) >> + seq_printf(seq, ",domain_id=%s", opt->domain_id); >> #endif >> return 0; >> } >> -- >> 2.20.1
| |