diff --git a/utils/src/change_format_version.c b/utils/src/change_format_version.c index 071e6303..1e5e1507 100644 --- a/utils/src/change_format_version.c +++ b/utils/src/change_format_version.c @@ -119,6 +119,16 @@ static int do_change_fmt_vers(struct change_fmt_vers_args *args) goto out; } + if (le64_to_cpu(meta_super->fmt_vers) > args->fmt_vers || + le64_to_cpu(data_super->fmt_vers) > args->fmt_vers) { + ret = -EPERM; + printf("Downgrade of Meta Format Version: %llu and Data Format Version: %llu to Format Version: %llu is not allowed\n", + le64_to_cpu(meta_super->fmt_vers), + le64_to_cpu(data_super->fmt_vers), + args->fmt_vers); + goto out; + } + if (le64_to_cpu(meta_super->fmt_vers) != args->fmt_vers) { meta_super->fmt_vers = cpu_to_le64(args->fmt_vers);