From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Chao Yu <yuchao0@huawei.com>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [PATCH 2/4] f2fs: build stat_info before orphan inode recovery
Date: Thu, 9 Mar 2017 15:41:03 -0800 [thread overview]
Message-ID: <20170309234103.GE4125@jaegeuk.local> (raw)
In-Reply-To: <bbfe2d75-76cb-1e25-5d7e-8e3b30d6204c@huawei.com>
On 03/09, Chao Yu wrote:
> On 2017/3/8 6:13, Jaegeuk Kim wrote:
> > f2fs_sync_fs() -> write_checkpoint() calls stat_inc_cp_count(sbi->stat_info),
> > which needs stat_info allocation.
> > Otherwise, we can hit:
> >
> > [254042.598623] ? count_shadow_nodes+0xa0/0xa0
> > [254042.598633] f2fs_sync_fs+0x65/0xd0 [f2fs]
> > [254042.598645] f2fs_balance_fs_bg+0xe4/0x1c0 [f2fs]
> > [254042.598657] f2fs_write_node_pages+0x34/0x1a0 [f2fs]
> > [254042.598664] ? pagevec_lookup_entries+0x1e/0x30
> > [254042.598673] do_writepages+0x1e/0x30
> > [254042.598682] __writeback_single_inode+0x45/0x330
> > [254042.598688] writeback_single_inode+0xd7/0x190
> > [254042.598694] write_inode_now+0x86/0xa0
> > [254042.598699] iput+0x122/0x200
> > [254042.598709] f2fs_fill_super+0xd4a/0x14d0 [f2fs]
> > [254042.598717] mount_bdev+0x184/0x1c0
> > [254042.598934] ? f2fs_commit_super+0x100/0x100 [f2fs]
> > [254042.599142] f2fs_mount+0x15/0x20 [f2fs]
> > [254042.599349] mount_fs+0x39/0x160
> > [254042.599554] ? __alloc_percpu+0x15/0x20
> > [254042.599759] vfs_kern_mount+0x67/0x110
> > [254042.599972] do_mount+0x1bb/0xc80
> > [254042.600175] ? memdup_user+0x42/0x60
> > [254042.600380] SyS_mount+0x83/0xd0
> > [254042.600583] entry_SYSCALL_64_fastpath+0x1e/0xad
> >
> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> > ---
> > fs/f2fs/super.c | 10 +++++-----
> > 1 file changed, 5 insertions(+), 5 deletions(-)
> >
> > diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> > index 96fe8ed73100..cfb40d3fd875 100644
> > --- a/fs/f2fs/super.c
> > +++ b/fs/f2fs/super.c
> > @@ -2022,6 +2022,10 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
> >
> > f2fs_join_shrinker(sbi);
> >
> > + err = f2fs_build_stats(sbi);
> > + if (err)
> > + goto free_nm;
>
> Both node_inode and shrinker need to be released and detached.
>
> How about relocate f2fs_build_stats in front of build_segment_manager?
I just got another panic to try this, since sys/../f2fs/status needs them.
Thanks,
>
> Thanks,
>
> > +
> > /* if there are nt orphan nodes free them */
> > err = recover_orphan_inodes(sbi);
> > if (err)
> > @@ -2046,10 +2050,6 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
> > goto free_root_inode;
> > }
> >
> > - err = f2fs_build_stats(sbi);
> > - if (err)
> > - goto free_root_inode;
> > -
> > if (f2fs_proc_root)
> > sbi->s_proc = proc_mkdir(sb->s_id, f2fs_proc_root);
> >
> > @@ -2143,7 +2143,6 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
> > remove_proc_entry("segment_bits", sbi->s_proc);
> > remove_proc_entry(sb->s_id, f2fs_proc_root);
> > }
> > - f2fs_destroy_stats(sbi);
> > free_root_inode:
> > dput(sb->s_root);
> > sb->s_root = NULL;
> > @@ -2161,6 +2160,7 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
> > truncate_inode_pages_final(META_MAPPING(sbi));
> > iput(sbi->node_inode);
> > mutex_unlock(&sbi->umount_mutex);
> > + f2fs_destroy_stats(sbi);
> > free_nm:
> > destroy_node_manager(sbi);
> > free_sm:
> >
------------------------------------------------------------------------------
Announcing the Oxford Dictionaries API! The API offers world-renowned
dictionary content that is easy and intuitive to access. Sign up for an
account today to start using our lexical data to power your apps and
projects. Get started today and enter our developer competition.
http://sdm.link/oxford
next prev parent reply other threads:[~2017-03-09 23:41 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-07 22:13 [PATCH 1/4] f2fs: fix wrong error injection for evict_inode Jaegeuk Kim
2017-03-07 22:13 ` [PATCH 2/4] f2fs: build stat_info before orphan inode recovery Jaegeuk Kim
2017-03-09 9:11 ` Chao Yu
2017-03-09 23:41 ` Jaegeuk Kim [this message]
2017-03-09 23:21 ` [PATCH 2/4 v2] " Jaegeuk Kim
2017-03-07 22:13 ` [PATCH 3/4] f2fs: show more precise message on orphan recovery failure Jaegeuk Kim
2017-03-07 22:13 ` [PATCH 4/4] f2fs: use __set{__claer}_bit_le Jaegeuk Kim
2017-03-09 10:38 ` Chao Yu
2017-03-09 8:53 ` [f2fs-dev] [PATCH 1/4] f2fs: fix wrong error injection for evict_inode 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=20170309234103.GE4125@jaegeuk.local \
--to=jaegeuk@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=yuchao0@huawei.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).