From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Chao Yu <chao2.yu@samsung.com>
Cc: 'Changman Lee' <cm224.lee@samsung.com>,
linux-f2fs-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Subject: Re: [f2fs-dev][PATCH 2/2] f2fs: enable recover_xattr_data to avoid cp when fsync after operating xattr
Date: Thu, 22 Jan 2015 15:13:18 -0800 [thread overview]
Message-ID: <20150122231318.GA16473@jaegeuk-mac02> (raw)
In-Reply-To: <008a01d02fb7$3abb2bd0$b0318370$@samsung.com>
Hi Chao,
On Wed, Jan 14, 2015 at 01:01:13PM +0800, Chao Yu wrote:
> Hi Jaegeuk,
>
> > -----Original Message-----
> > From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> > Sent: Wednesday, January 14, 2015 8:22 AM
> > To: Chao Yu
> > Cc: 'Changman Lee'; linux-f2fs-devel@lists.sourceforge.net; linux-kernel@vger.kernel.org
> > Subject: Re: [f2fs-dev][PATCH 2/2] f2fs: enable recover_xattr_data to avoid cp when fsync after
> > operating xattr
> >
> > On Mon, Jan 12, 2015 at 05:40:28PM +0800, Chao Yu wrote:
> > > Hi Jaegeuk,
> > >
> > > > -----Original Message-----
> > > > From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> > > > Sent: Sunday, January 11, 2015 1:32 PM
> > > > To: Chao Yu
> > > > Cc: 'Changman Lee'; linux-f2fs-devel@lists.sourceforge.net; linux-kernel@vger.kernel.org
> > > > Subject: Re: [f2fs-dev][PATCH 2/2] f2fs: enable recover_xattr_data to avoid cp when fsync
> > after
> > > > operating xattr
> > > >
> > > > On Sat, Jan 10, 2015 at 08:08:33PM +0800, Chao Yu wrote:
> > > > > Hi Jaegeuk,
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> > > > > > Sent: Wednesday, January 07, 2015 3:44 AM
> > > > > > To: Chao Yu
> > > > > > Cc: Changman Lee; linux-f2fs-devel@lists.sourceforge.net; linux-kernel@vger.kernel.org
> > > > > > Subject: Re: [f2fs-dev][PATCH 2/2] f2fs: enable recover_xattr_data to avoid cp when
> > fsync
> > > > after
> > > > > > operating xattr
> > > > > >
> > > > > > Hi Chao,
> > > > > >
> > > > > > On Tue, Jan 06, 2015 at 02:29:40PM +0800, Chao Yu wrote:
> > > > > > > Now if we call fsync() after we update the xattr date belongs to the file, f2fs
> > > > > > > will do checkpoint to keep data.
> > > > > > > This can cause low performance because checkpoint block most operation and write
> > > > > > > lots of blocks. So we'd better to avoid doing checkpoint by writing modified
> > > > > > > xattr node page to warm node segment, and then it can be recovered when we mount
> > > > > > > this device later on.
> > > > > >
> > > > > > You're trying to change the writing policy as xattr blocks are written into
> > > > > > WARM_NODE area instead of COLD_NODE area.
> > > > > > I don't think xattrs are frequently changed between each fsync calls.
> > > > > >
> > > > > > How do you think?
> > > > >
> > > > > I'm not sure whether there is a scenario that setxattr and fsync are invoked
> > > > > alternately, but if there is, our performance will decrease obviously.
> > > > >
> > > > > If you don't want to change writing policy, how about writing xattr node with
> > > > > fsync flag into cold node segment when fsync() is called, then try to recover
> > > > > it from cold node chain when recovery after abnormally pow-cut, this way can
> > > > > avoid cp frequently in above scenario.
> > > >
> > > > Firt of all, I don't think this scenario is frequent enough that we have to
> > > > break the exisiting writing and recovery procedures.
> > > > Moreover, if xattr entries are covered by inline_xattr, it doesn't trigger
> > > > checkpoint.
> > >
> > > Agree, that's a good solution.
> > >
> > > >
> > > > Let me know, if I'm missing something.
> > > >
> > > > If you try to change the recovery procedure, it needs to think about the
> > > > disk full condition. (i.e., space_for_roll_forward())
> > > > And, I don't want to search cold node chain.
> > >
> > > OK, if we keep writing policy and recovery procedure as it is, then, shouldn't our
> > > recover_xattr_data be dropped because it will be not used from any call path?
> > > How do you think of below patch?
> >
> > Hi Chao,
> >
> > Nice catch.
> > But, IIRC, this code was remained for backward compatibility, since long time
> > ago, xattr blocks were written into the warm node chain.
>
> Ah, I got it, thanks for your explanation! :)
> How do you think of adding some comments on these codes, because this can help
> developers understand it well and not to submit the wrong fix patch like me again.
Something like this?
>From 6b609421e4f9f52de26554300aae62de33e0703a Mon Sep 17 00:00:00 2001
From: Jaegeuk Kim <jaegeuk@kernel.org>
Date: Thu, 22 Jan 2015 14:48:28 -0800
Subject: [PATCH] f2fs: leave comment for code readability
During the recovery, any xattr blocks should not be found, since they are
written into cold log, not the warm node chain.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fs/f2fs/recovery.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index c4211a5..57603a7 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -346,6 +346,10 @@ static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode,
if (IS_INODE(page)) {
recover_inline_xattr(inode, page);
} else if (f2fs_has_xattr_block(ofs_of_node(page))) {
+ /*
+ * Deprecated; xattr blocks should be found from cold log.
+ * But, we should remain this for backward compatibility.
+ */
recover_xattr_data(inode, page, blkaddr);
goto out;
}
--
2.1.1
next prev parent reply other threads:[~2015-01-22 23:13 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-06 6:29 [f2fs-dev][PATCH 2/2] f2fs: enable recover_xattr_data to avoid cp when fsync after operating xattr Chao Yu
2015-01-06 19:44 ` [PATCH " Jaegeuk Kim
2015-01-10 12:08 ` [f2fs-dev][PATCH " Chao Yu
2015-01-11 5:32 ` Jaegeuk Kim
2015-01-12 9:40 ` Chao Yu
2015-01-14 0:22 ` Jaegeuk Kim
2015-01-14 5:01 ` Chao Yu
2015-01-22 23:13 ` Jaegeuk Kim [this message]
2015-01-23 3: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=20150122231318.GA16473@jaegeuk-mac02 \
--to=jaegeuk@kernel.org \
--cc=chao2.yu@samsung.com \
--cc=cm224.lee@samsung.com \
--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 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).