From: Gao Xiang Date: Tue, 2 Jul 2024 08:31:44 +0000 (+0800) Subject: erofs-utils: rebuild: only update dev/i_ino[1] pairs for directories X-Git-Tag: v1.8~29 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=149a25dbc0b7cf34fc9d099666fbd8665a69072a;p=platform%2Fupstream%2Ferofs-utils.git erofs-utils: rebuild: only update dev/i_ino[1] pairs for directories Since the underlying dev/i_ino[1] pairs are only useful for merged sub-directories, don't bother with other types of inodes. Otherwise, the original i_ino[1] could be overwritten unexpectedly, which impacts resvsp mode at least.. Fixes: f64d9d02576b ("erofs-utils: introduce incremental builds") Reported-by: Hongzhen Luo Signed-off-by: Gao Xiang Link: https://lore.kernel.org/r/20240702083144.2120808-1-hsiangkao@linux.alibaba.com --- diff --git a/lib/rebuild.c b/lib/rebuild.c index 8b186eb..0b1a6c6 100644 --- a/lib/rebuild.c +++ b/lib/rebuild.c @@ -464,10 +464,13 @@ static int erofs_rebuild_basedir_dirent_iter(struct erofs_dir_context *ctx) } else { struct erofs_inode *inode = d->inode; - list_del(&inode->i_hash); - inode->dev = dir->sbi->dev; - inode->i_ino[1] = ctx->de_nid; - erofs_insert_ihash(inode); + /* update sub-directories only for recursively loading */ + if (S_ISDIR(inode->i_mode)) { + list_del(&inode->i_hash); + inode->dev = dir->sbi->dev; + inode->i_ino[1] = ctx->de_nid; + erofs_insert_ihash(inode); + } } ret = 0; out: