From: Yue Hu <zbestahu@gmail.com>
To: Jingbo Xu <jefflexu@linux.alibaba.com>
Cc: linux-erofs@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/7] erofs: initialize packed inode after root inode is assigned
Date: Mon, 10 Apr 2023 10:44:15 +0800 [thread overview]
Message-ID: <20230410104415.00006ad2.zbestahu@gmail.com> (raw)
In-Reply-To: <20230407141710.113882-3-jefflexu@linux.alibaba.com>
On Fri, 7 Apr 2023 22:17:05 +0800
Jingbo Xu <jefflexu@linux.alibaba.com> wrote:
> As commit 8f7acdae2cd4 ("staging: erofs: kill all failure handling in
> fill_super()"), move the initialization of packed inode after root
> inode is assigned, so that the iput() in .put_super() is adequate as
> the failure handling.
>
> Otherwise, iput() is also needed in .kill_sb(), in case of the mounting
> fails halfway.
>
> Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com>
Reviewed-by: Yue Hu <huyue2@coolpad.com>
> ---
> fs/erofs/internal.h | 1 +
> fs/erofs/super.c | 22 +++++++++++-----------
> 2 files changed, 12 insertions(+), 11 deletions(-)
>
> diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h
> index 2bcff3194e4a..caea9dc1cd82 100644
> --- a/fs/erofs/internal.h
> +++ b/fs/erofs/internal.h
> @@ -157,6 +157,7 @@ struct erofs_sb_info {
>
> /* what we really care is nid, rather than ino.. */
> erofs_nid_t root_nid;
> + erofs_nid_t packed_nid;
> /* used for statfs, f_files - f_favail */
> u64 inos;
>
> diff --git a/fs/erofs/super.c b/fs/erofs/super.c
> index 58ffbf410bfb..325602820dc8 100644
> --- a/fs/erofs/super.c
> +++ b/fs/erofs/super.c
> @@ -388,17 +388,7 @@ static int erofs_read_superblock(struct super_block *sb)
> #endif
> sbi->islotbits = ilog2(sizeof(struct erofs_inode_compact));
> sbi->root_nid = le16_to_cpu(dsb->root_nid);
> -#ifdef CONFIG_EROFS_FS_ZIP
> - sbi->packed_inode = NULL;
> - if (erofs_sb_has_fragments(sbi) && dsb->packed_nid) {
> - sbi->packed_inode =
> - erofs_iget(sb, le64_to_cpu(dsb->packed_nid));
> - if (IS_ERR(sbi->packed_inode)) {
> - ret = PTR_ERR(sbi->packed_inode);
> - goto out;
> - }
> - }
> -#endif
> + sbi->packed_nid = le64_to_cpu(dsb->packed_nid);
> sbi->inos = le64_to_cpu(dsb->inos);
>
> sbi->build_time = le64_to_cpu(dsb->build_time);
> @@ -820,6 +810,16 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc)
>
> erofs_shrinker_register(sb);
> /* sb->s_umount is already locked, SB_ACTIVE and SB_BORN are not set */
> +#ifdef CONFIG_EROFS_FS_ZIP
> + if (erofs_sb_has_fragments(sbi) && sbi->packed_nid) {
> + sbi->packed_inode = erofs_iget(sb, sbi->packed_nid);
> + if (IS_ERR(sbi->packed_inode)) {
> + err = PTR_ERR(sbi->packed_inode);
> + sbi->packed_inode = NULL;
> + return err;
> + }
> + }
> +#endif
> err = erofs_init_managed_cache(sb);
> if (err)
> return err;
WARNING: multiple messages have this Message-ID (diff)
From: Yue Hu <zbestahu@gmail.com>
To: Jingbo Xu <jefflexu@linux.alibaba.com>
Cc: xiang@kernel.org, chao@kernel.org, linux-erofs@lists.ozlabs.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/7] erofs: initialize packed inode after root inode is assigned
Date: Mon, 10 Apr 2023 10:44:15 +0800 [thread overview]
Message-ID: <20230410104415.00006ad2.zbestahu@gmail.com> (raw)
In-Reply-To: <20230407141710.113882-3-jefflexu@linux.alibaba.com>
On Fri, 7 Apr 2023 22:17:05 +0800
Jingbo Xu <jefflexu@linux.alibaba.com> wrote:
> As commit 8f7acdae2cd4 ("staging: erofs: kill all failure handling in
> fill_super()"), move the initialization of packed inode after root
> inode is assigned, so that the iput() in .put_super() is adequate as
> the failure handling.
>
> Otherwise, iput() is also needed in .kill_sb(), in case of the mounting
> fails halfway.
>
> Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com>
Reviewed-by: Yue Hu <huyue2@coolpad.com>
> ---
> fs/erofs/internal.h | 1 +
> fs/erofs/super.c | 22 +++++++++++-----------
> 2 files changed, 12 insertions(+), 11 deletions(-)
>
> diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h
> index 2bcff3194e4a..caea9dc1cd82 100644
> --- a/fs/erofs/internal.h
> +++ b/fs/erofs/internal.h
> @@ -157,6 +157,7 @@ struct erofs_sb_info {
>
> /* what we really care is nid, rather than ino.. */
> erofs_nid_t root_nid;
> + erofs_nid_t packed_nid;
> /* used for statfs, f_files - f_favail */
> u64 inos;
>
> diff --git a/fs/erofs/super.c b/fs/erofs/super.c
> index 58ffbf410bfb..325602820dc8 100644
> --- a/fs/erofs/super.c
> +++ b/fs/erofs/super.c
> @@ -388,17 +388,7 @@ static int erofs_read_superblock(struct super_block *sb)
> #endif
> sbi->islotbits = ilog2(sizeof(struct erofs_inode_compact));
> sbi->root_nid = le16_to_cpu(dsb->root_nid);
> -#ifdef CONFIG_EROFS_FS_ZIP
> - sbi->packed_inode = NULL;
> - if (erofs_sb_has_fragments(sbi) && dsb->packed_nid) {
> - sbi->packed_inode =
> - erofs_iget(sb, le64_to_cpu(dsb->packed_nid));
> - if (IS_ERR(sbi->packed_inode)) {
> - ret = PTR_ERR(sbi->packed_inode);
> - goto out;
> - }
> - }
> -#endif
> + sbi->packed_nid = le64_to_cpu(dsb->packed_nid);
> sbi->inos = le64_to_cpu(dsb->inos);
>
> sbi->build_time = le64_to_cpu(dsb->build_time);
> @@ -820,6 +810,16 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc)
>
> erofs_shrinker_register(sb);
> /* sb->s_umount is already locked, SB_ACTIVE and SB_BORN are not set */
> +#ifdef CONFIG_EROFS_FS_ZIP
> + if (erofs_sb_has_fragments(sbi) && sbi->packed_nid) {
> + sbi->packed_inode = erofs_iget(sb, sbi->packed_nid);
> + if (IS_ERR(sbi->packed_inode)) {
> + err = PTR_ERR(sbi->packed_inode);
> + sbi->packed_inode = NULL;
> + return err;
> + }
> + }
> +#endif
> err = erofs_init_managed_cache(sb);
> if (err)
> return err;
next prev parent reply other threads:[~2023-04-10 2:37 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-07 14:17 [PATCH 0/7] erofs: introduce long xattr name prefixes feature Jingbo Xu
2023-04-07 14:17 ` [PATCH 1/7] erofs: keep meta inode into erofs_buf Jingbo Xu
2023-04-07 14:17 ` [PATCH 2/7] erofs: initialize packed inode after root inode is assigned Jingbo Xu
2023-04-09 10:52 ` Gao Xiang
2023-04-10 2:44 ` Yue Hu [this message]
2023-04-10 2:44 ` Yue Hu
2023-04-07 14:17 ` [PATCH 3/7] erofs: move packed inode out of the compression part Jingbo Xu
2023-04-09 10:53 ` Gao Xiang
2023-04-10 2:45 ` Yue Hu
2023-04-10 2:45 ` Yue Hu
2023-04-07 14:17 ` [PATCH 4/7] erofs: introduce on-disk format for long xattr name prefixes Jingbo Xu
2023-04-10 5:24 ` Gao Xiang
2023-04-07 14:17 ` [PATCH 5/7] erofs: add helpers to load " Jingbo Xu
2023-04-10 5:44 ` Gao Xiang
2023-04-07 14:17 ` [PATCH 6/7] erofs: handle long xattr name prefixes properly Jingbo Xu
2023-04-10 5:53 ` Gao Xiang
2023-04-10 5:53 ` Gao Xiang
2023-04-10 6:39 ` [PATCH v2 " Jingbo Xu
2023-04-10 6:47 ` Gao Xiang
2023-04-11 9:35 ` [PATCH v3 " Jingbo Xu
2023-04-11 9:40 ` Gao Xiang
2023-04-07 14:17 ` [PATCH 7/7] erofs: enable long extended attribute name prefixes Jingbo Xu
2023-04-07 17:29 ` kernel test robot
2023-04-07 17:29 ` kernel test robot
2023-04-07 18:22 ` kernel test robot
2023-04-07 18:22 ` kernel test robot
2023-04-07 22:28 ` [PATCH v2 " Jingbo Xu
2023-04-10 5:54 ` Gao Xiang
2023-04-10 5:54 ` Gao Xiang
2023-04-16 14:24 ` [PATCH 0/7] erofs: introduce long xattr name prefixes feature Chao Yu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230410104415.00006ad2.zbestahu@gmail.com \
--to=zbestahu@gmail.com \
--cc=jefflexu@linux.alibaba.com \
--cc=linux-erofs@lists.ozlabs.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.