From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Chao Yu <chao@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [PATCH 1/8] f2fs: clear nlink if fail to add_link
Date: Wed, 12 Oct 2016 10:22:44 -0700 [thread overview]
Message-ID: <20161012172244.GB98211@jaegeuk> (raw)
In-Reply-To: <f7223716-7822-67a0-8165-b7d55e06c589@kernel.org>
On Wed, Oct 12, 2016 at 11:24:28PM +0800, Chao Yu wrote:
> Hi Jaegeuk,
>
> On 2016/10/12 6:19, Jaegeuk Kim wrote:
> > Hi Chao,
> >
> > On Tue, Oct 11, 2016 at 10:56:59PM +0800, Chao Yu wrote:
> >> From: Chao Yu <yuchao0@huawei.com>
> >>
> >> We don't need to keep incomplete created inode in cache, so if we fail to
> >> add link into directory during new inode creation, it's better to set
> >> nlink of inode to zero, then we can evict inode immediately. Otherwise
> >> release of nid belong to inode will be delayed until inode cache is being
> >> shrunk, it may cause a seemingly endless loop while allocating free nids
> >> in time of testing generic/269 case of fstest suit.
> >>
> >> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> >> ---
> >> fs/f2fs/inode.c | 8 ++++++++
> >> 1 file changed, 8 insertions(+)
> >>
> >> diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
> >> index d736989..34ae03c 100644
> >> --- a/fs/f2fs/inode.c
> >> +++ b/fs/f2fs/inode.c
> >> @@ -384,6 +384,8 @@ retry:
> >> f2fs_lock_op(sbi);
> >> err = remove_inode_page(inode);
> >> f2fs_unlock_op(sbi);
> >> + if (err == -ENOENT)
> >> + err = 0;
> >> }
> >>
> >> /* give more chances, if ENOMEM case */
> >> @@ -424,6 +426,12 @@ void handle_failed_inode(struct inode *inode)
> >> struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
> >> struct node_info ni;
> >>
> >> + /*
> >> + * clear nlink of inode in order to release resource of inode
> >> + * immediately.
> >> + */
> >> + clear_nlink(inode);
> >
> > We must call update_inode_page() here to avoid kernel panic.
> > Otherwise, this inode is kept in the gdirty list, resulting in kernel panic
> > when flushg dirty inodes, since it was already evicted.
>
> Thanks for fixing this, is this panic produced with fault injection?
No, it happened xfstests/027 under encrypted mode only.
Thanks,
>
> Thanks,
>
> >
> > I fixed this and started a round of tests.
> >
> > Thanks,
> >
> >> +
> >> /* don't make bad inode, since it becomes a regular file. */
> >> unlock_new_inode(inode);
> >>
> >> --
> >> 2.10.1
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
WARNING: multiple messages have this Message-ID (diff)
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Chao Yu <chao@kernel.org>
Cc: linux-f2fs-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org, Chao Yu <yuchao0@huawei.com>
Subject: Re: [PATCH 1/8] f2fs: clear nlink if fail to add_link
Date: Wed, 12 Oct 2016 10:22:44 -0700 [thread overview]
Message-ID: <20161012172244.GB98211@jaegeuk> (raw)
In-Reply-To: <f7223716-7822-67a0-8165-b7d55e06c589@kernel.org>
On Wed, Oct 12, 2016 at 11:24:28PM +0800, Chao Yu wrote:
> Hi Jaegeuk,
>
> On 2016/10/12 6:19, Jaegeuk Kim wrote:
> > Hi Chao,
> >
> > On Tue, Oct 11, 2016 at 10:56:59PM +0800, Chao Yu wrote:
> >> From: Chao Yu <yuchao0@huawei.com>
> >>
> >> We don't need to keep incomplete created inode in cache, so if we fail to
> >> add link into directory during new inode creation, it's better to set
> >> nlink of inode to zero, then we can evict inode immediately. Otherwise
> >> release of nid belong to inode will be delayed until inode cache is being
> >> shrunk, it may cause a seemingly endless loop while allocating free nids
> >> in time of testing generic/269 case of fstest suit.
> >>
> >> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> >> ---
> >> fs/f2fs/inode.c | 8 ++++++++
> >> 1 file changed, 8 insertions(+)
> >>
> >> diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
> >> index d736989..34ae03c 100644
> >> --- a/fs/f2fs/inode.c
> >> +++ b/fs/f2fs/inode.c
> >> @@ -384,6 +384,8 @@ retry:
> >> f2fs_lock_op(sbi);
> >> err = remove_inode_page(inode);
> >> f2fs_unlock_op(sbi);
> >> + if (err == -ENOENT)
> >> + err = 0;
> >> }
> >>
> >> /* give more chances, if ENOMEM case */
> >> @@ -424,6 +426,12 @@ void handle_failed_inode(struct inode *inode)
> >> struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
> >> struct node_info ni;
> >>
> >> + /*
> >> + * clear nlink of inode in order to release resource of inode
> >> + * immediately.
> >> + */
> >> + clear_nlink(inode);
> >
> > We must call update_inode_page() here to avoid kernel panic.
> > Otherwise, this inode is kept in the gdirty list, resulting in kernel panic
> > when flushg dirty inodes, since it was already evicted.
>
> Thanks for fixing this, is this panic produced with fault injection?
No, it happened xfstests/027 under encrypted mode only.
Thanks,
>
> Thanks,
>
> >
> > I fixed this and started a round of tests.
> >
> > Thanks,
> >
> >> +
> >> /* don't make bad inode, since it becomes a regular file. */
> >> unlock_new_inode(inode);
> >>
> >> --
> >> 2.10.1
next prev parent reply other threads:[~2016-10-12 17:22 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-11 14:56 [PATCH 1/8] f2fs: clear nlink if fail to add_link Chao Yu
2016-10-11 14:56 ` Chao Yu
2016-10-11 14:57 ` [PATCH 2/8] f2fs: fix to release discard entries during checkpoint Chao Yu
2016-10-11 14:57 ` Chao Yu
2016-10-11 14:57 ` [PATCH 3/8] f2fs: give a chance to detach from dirty list Chao Yu
2016-10-11 14:57 ` Chao Yu
2016-10-11 14:57 ` [PATCH 4/8] f2fs: add missing f2fs_balance_fs in f2fs_zero_range Chao Yu
2016-10-11 14:57 ` Chao Yu
2016-10-11 14:57 ` [PATCH 5/8] f2fs: don't miss any f2fs_balance_fs cases Chao Yu
2016-10-11 14:57 ` Chao Yu
2016-10-11 14:57 ` [PATCH 6/8] f2fs: be aware of extent beyond EOF in fiemap Chao Yu
2016-10-11 14:57 ` Chao Yu
2016-10-11 14:57 ` [PATCH 7/8] f2fs: fix to update largest extent under lock Chao Yu
2016-10-11 14:57 ` Chao Yu
2016-10-11 14:57 ` [PATCH 8/8] f2fs: fix error handling in fsync_node_pages Chao Yu
2016-10-11 14:57 ` Chao Yu
2016-10-11 22:19 ` [PATCH 1/8] f2fs: clear nlink if fail to add_link Jaegeuk Kim
2016-10-11 22:19 ` Jaegeuk Kim
2016-10-12 15:24 ` Chao Yu
2016-10-12 15:24 ` Chao Yu
2016-10-12 17:22 ` Jaegeuk Kim [this message]
2016-10-12 17:22 ` Jaegeuk Kim
2016-10-13 10:29 ` Chao Yu
2016-10-13 10:29 ` 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=20161012172244.GB98211@jaegeuk \
--to=jaegeuk@kernel.org \
--cc=chao@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--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.