[PATCH 2/2] erofs-utils: lib: fix meta_blkaddr handling for 48-bit layout

Ajay Rajera newajay.11r at gmail.com
Fri Mar 20 00:39:48 AEDT 2026


Fix the FIXME in metabox.c by properly handling meta_blkaddr for 48-bit layouts. In erofs_writesb(), set meta_blkaddr to 0 on-disk when 48-bit layout is enabled since meta_blkaddr is encoded differently in that mode. Remove the now-resolved FIXME comment in metabox.c as the issue is addressed in super.c.

Signed-off-by: Ajay Rajera <newajay.11r at gmail.com>
---
 lib/metabox.c | 1 -
 lib/super.c   | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/metabox.c b/lib/metabox.c
index d6abd51..077f88b 100644
--- a/lib/metabox.c
+++ b/lib/metabox.c
@@ -62,7 +62,6 @@ int erofs_metadata_init(struct erofs_sb_info *sbi)
 		if (ret)
 			goto err_free;
 		sbi->m2gr = m2gr;
-		/* FIXME: sbi->meta_blkaddr should be 0 for 48-bit layouts */
 		sbi->meta_blkaddr = EROFS_META_NEW_ADDR;
 	}
 
diff --git a/lib/super.c b/lib/super.c
index 088c9a0..99d2a24 100644
--- a/lib/super.c
+++ b/lib/super.c
@@ -209,7 +209,7 @@ int erofs_writesb(struct erofs_sb_info *sbi)
 		.epoch     = cpu_to_le64(sbi->epoch),
 		.build_time = cpu_to_le64(sbi->build_time),
 		.fixed_nsec = cpu_to_le32(sbi->fixed_nsec),
-		.meta_blkaddr  = cpu_to_le32(sbi->meta_blkaddr),
+		.meta_blkaddr  = cpu_to_le32(erofs_sb_has_48bit(sbi) ? 0 : sbi->meta_blkaddr),
 		.xattr_blkaddr = cpu_to_le32(sbi->xattr_blkaddr),
 		.xattr_prefix_count = sbi->xattr_prefix_count,
 		.xattr_prefix_start = cpu_to_le32(sbi->xattr_prefix_start),
-- 
2.51.0.windows.1



More information about the Linux-erofs mailing list