[PATCH 1/2] erofs-utils: dump: read packed inode only by valid packed_nid

Gao Xiang hsiangkao at linux.alibaba.com
Fri Jun 2 19:43:09 AEST 2023



On 2023/6/2 17:37, Yue Hu wrote:
> From: Yue Hu <huyue2 at coolpad.com>
> 
> Since dedupe feature is also using the same feature bit as fragments.
> Meanwhile, add missing dedupe feature to feature_lists[].
> 
> Fixes: a6336feefe37 ("erofs-utils: dump: support fragments")
> Signed-off-by: Yue Hu <huyue2 at coolpad.com>

We should check both
erofs_sb_has_fragments() && sbi.packed_nid > 0 here.

Thanks,
Gao Xiang

> ---
>   dump/main.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/dump/main.c b/dump/main.c
> index fd1923f..b9aa0f5 100644
> --- a/dump/main.c
> +++ b/dump/main.c
> @@ -99,6 +99,7 @@ static struct erofsdump_feature feature_lists[] = {
>   	{ false, EROFS_FEATURE_INCOMPAT_DEVICE_TABLE, "device_table" },
>   	{ false, EROFS_FEATURE_INCOMPAT_ZTAILPACKING, "ztailpacking" },
>   	{ false, EROFS_FEATURE_INCOMPAT_FRAGMENTS, "fragments" },
> +	{ false, EROFS_FEATURE_INCOMPAT_DEDUPE, "dedupe" },
>   };
>   
>   static int erofsdump_readdir(struct erofs_dir_context *ctx);
> @@ -273,7 +274,7 @@ static int erofsdump_read_packed_inode(void)
>   	erofs_off_t occupied_size = 0;
>   	struct erofs_inode vi = { .nid = sbi.packed_nid };
>   
> -	if (!erofs_sb_has_fragments())
> +	if (!sbi.packed_nid)
>   		return 0;
>   
>   	err = erofs_read_inode_from_disk(&vi);
> @@ -605,7 +606,7 @@ static void erofsdump_show_superblock(void)
>   			sbi.xattr_blkaddr);
>   	fprintf(stdout, "Filesystem root nid:                          %llu\n",
>   			sbi.root_nid | 0ULL);
> -	if (erofs_sb_has_fragments())
> +	if (sbi.packed_nid > 0)
>   		fprintf(stdout, "Filesystem packed nid:                        %llu\n",
>   			sbi.packed_nid | 0ULL);
>   	fprintf(stdout, "Filesystem inode count:                       %llu\n",


More information about the Linux-erofs mailing list