erofs-utils: lib: initialize i_nlink to 2 in erofs_init_empty_dir()
authorJingbo Xu <jefflexu@linux.alibaba.com>
Thu, 27 Jul 2023 04:57:05 +0000 (12:57 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Thu, 27 Jul 2023 07:38:10 +0000 (15:38 +0800)
Set dir->i_nlink to 2 since "." and ".." are allocated.

Also, tarerofs_init_empty_dir() is removed then.

Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230727045712.45226-2-jefflexu@linux.alibaba.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
lib/inode.c
lib/tar.c
mkfs/main.c

index c4d147674473db8c9be1401d86042645f5bd53a3..d54f84f053726dd1a4640fded9de8f554a2f6f58 100644 (file)
@@ -235,6 +235,8 @@ int erofs_init_empty_dir(struct erofs_inode *dir)
                return PTR_ERR(d);
        d->inode = erofs_igrab(dir->i_parent);
        d->type = EROFS_FT_DIR;
+
+       dir->i_nlink = 2;
        return 0;
 }
 
index 76ba69d559d542cacd527c6cc517f9cdf3f3d534..3c145e57ced6df039ac144d7d5caca53f0052505 100644 (file)
--- a/lib/tar.c
+++ b/lib/tar.c
@@ -138,16 +138,6 @@ static long long tarerofs_parsenum(const char *ptr, int len)
        return tarerofs_otoi(ptr, len);
 }
 
-int tarerofs_init_empty_dir(struct erofs_inode *inode)
-{
-       int ret = erofs_init_empty_dir(inode);
-
-       if (ret)
-               return ret;
-       inode->i_nlink = 2;
-       return 0;
-}
-
 static struct erofs_dentry *tarerofs_mkdir(struct erofs_inode *dir, const char *s)
 {
        struct erofs_inode *inode;
@@ -163,7 +153,7 @@ static struct erofs_dentry *tarerofs_mkdir(struct erofs_inode *dir, const char *
        inode->i_gid = getgid();
        inode->i_mtime = inode->sbi->build_time;
        inode->i_mtime_nsec = inode->sbi->build_time_nsec;
-       tarerofs_init_empty_dir(inode);
+       erofs_init_empty_dir(inode);
 
        d = erofs_d_alloc(dir, s);
        if (!IS_ERR(d)) {
@@ -759,7 +749,7 @@ new_inode:
                inode->i_nlink++;
                ret = 0;
        } else if (!inode->i_nlink)
-               ret = tarerofs_init_empty_dir(inode);
+               ret = erofs_init_empty_dir(inode);
        else
                ret = 0;
 out:
index 92a07fda453f746af956daea8ecf13f708846495..bc5ed877f0a46de65826a36a1832c3eacaaaa0a7 100644 (file)
@@ -928,7 +928,7 @@ int main(int argc, char **argv)
                root_inode->i_parent = root_inode;
                root_inode->i_mtime = sbi.build_time;
                root_inode->i_mtime_nsec = sbi.build_time_nsec;
-               tarerofs_init_empty_dir(root_inode);
+               erofs_init_empty_dir(root_inode);
 
                while (!(err = tarerofs_parse_tar(root_inode, &erofstar)));