Fixes: 203c847cc7d1 ("erofs-utils: unify the tree traversal for the rebuild 
mode")
Closes: 
https://github.com/erofs/erofsnightly/actions/runs/9492427961/job/26159566596
Signed-off-by: Gao Xiang <hsiang...@linux.alibaba.com>
---
 lib/inode.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/inode.c b/lib/inode.c
index 7d4ccc4..9219759 100644
--- a/lib/inode.c
+++ b/lib/inode.c
@@ -1386,7 +1386,7 @@ static int erofs_rebuild_handle_directory(struct 
erofs_inode *dir)
        int ret;
 
        nr_subdirs = 0;
-       i_nlink = 2;
+       i_nlink = 0;
        list_for_each_entry_safe(d, n, &dir->i_subdirs, d_child) {
                if (cfg.c_ovlfs_strip && erofs_inode_is_whiteout(d->inode)) {
                        erofs_dbg("remove whiteout %s", d->inode->i_srcpath);
@@ -1399,6 +1399,8 @@ static int erofs_rebuild_handle_directory(struct 
erofs_inode *dir)
                ++nr_subdirs;
        }
 
+       DBG_BUGON(i_nlink < 2);         /* should have `.` and `..` */
+       DBG_BUGON(nr_subdirs < i_nlink);
        ret = erofs_prepare_dir_layout(dir, nr_subdirs);
        if (ret)
                return ret;
-- 
2.39.3

Reply via email to