[PATCH 1/2] erofs-utils: mkfs: correct sb_size if metabox is on

Gao Xiang hsiangkao at linux.alibaba.com
Fri Sep 12 05:28:26 AEST 2025


Fixes: 4f7aa6b8fb7f ("erofs-utils: lib: introduce API helpers to prepare mkfs context")
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
 lib/importer.c | 10 ++++------
 lib/metabox.c  |  4 +++-
 mkfs/main.c    |  1 +
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/lib/importer.c b/lib/importer.c
index 9c57c07..bb29bd0 100644
--- a/lib/importer.c
+++ b/lib/importer.c
@@ -55,12 +55,10 @@ int erofs_importer_init(struct erofs_importer *im)
 			goto out_err;
 	}
 
-	if (cfg.c_mkfs_pclustersize_metabox >= 0) {
-		subsys = "metabox";
-		err = erofs_metabox_init(sbi);
-		if (err)
-			goto out_err;
-	}
+	subsys = "metabox";
+	err = erofs_metabox_init(sbi);
+	if (err)
+		goto out_err;
 
 	if (cfg.c_fragments) {
 		subsys = "dedupe_ext";
diff --git a/lib/metabox.c b/lib/metabox.c
index abde5e6..bf188f6 100644
--- a/lib/metabox.c
+++ b/lib/metabox.c
@@ -30,6 +30,9 @@ int erofs_metabox_init(struct erofs_sb_info *sbi)
 	struct erofs_metaboxmgr *m2gr;
 	int ret;
 
+	if (!erofs_sb_has_metabox(sbi))
+		return 0;
+
 	m2gr = malloc(sizeof(*m2gr));
 	if (!m2gr)
 		return -ENOMEM;
@@ -41,7 +44,6 @@ int erofs_metabox_init(struct erofs_sb_info *sbi)
 	m2gr->vf = (struct erofs_vfile){ .fd = ret };
 	m2gr->bmgr = erofs_buffer_init(sbi, 0, &m2gr->vf);
 	if (m2gr->bmgr) {
-		erofs_sb_set_metabox(sbi);
 		sbi->m2gr = m2gr;
 		return 0;
 	}
diff --git a/mkfs/main.c b/mkfs/main.c
index 3dd5815..c328e0a 100644
--- a/mkfs/main.c
+++ b/mkfs/main.c
@@ -1444,6 +1444,7 @@ static int mkfs_parse_options_cfg(struct erofs_importer_params *params,
 		}
 		cfg.c_mkfs_pclustersize_metabox = pclustersize_metabox;
 		cfg.c_mkfs_metabox_algid = metabox_algorithmid;
+		erofs_sb_set_metabox(&g_sbi);
 	}
 
 	if (has_timestamp && cfg.c_timeinherit == TIMESTAMP_UNSPECIFIED)
-- 
2.43.5



More information about the Linux-erofs mailing list