All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Yunlong Song <yunlong.song@huawei.com>
Cc: cm224.lee@samsung.com, yuchao0@huawei.com, chao@kernel.org,
	sylinux@163.com, miaoxie@huawei.com, bintian.wang@huawei.com,
	linux-fsdevel@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] f2fs: provide more chance for node and data to get ssr segment
Date: Wed, 22 Feb 2017 17:17:54 -0800	[thread overview]
Message-ID: <20170223011754.GH4003@jaegeuk.local> (raw)
In-Reply-To: <1487767851-819-3-git-send-email-yunlong.song@huawei.com>

[-- Attachment #1: Type: text/plain, Size: 1375 bytes --]

Hi Yunlong,

I've been testing the similar patches as I attached.

Thanks,

On 02/22, Yunlong Song wrote:
> Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
> ---
>  fs/f2fs/segment.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 9d13743..5fe71b9 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -1540,12 +1540,17 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int type)
>  {
>  	struct curseg_info *curseg = CURSEG_I(sbi, type);
>  	const struct victim_selection *v_ops = DIRTY_I(sbi)->v_ops;
> +	int old_type = type;
>  
>  	if (IS_NODESEG(type)) {
>  		for (; type >= CURSEG_HOT_NODE; type--)
>  			if (v_ops->get_victim(sbi, &(curseg)->next_segno,
>  							BG_GC, type, SSR))
>  				return 1;
> +		for (type = old_type + 1; type <= CURSEG_COLD_NODE; type++)
> +			if (v_ops->get_victim(sbi, &(curseg)->next_segno,
> +							BG_GC, type, SSR))
> +				return 1;
>  		return 0;
>  	}
>  
> @@ -1554,6 +1559,10 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int type)
>  		if (v_ops->get_victim(sbi, &(curseg)->next_segno,
>  						BG_GC, type, SSR))
>  			return 1;
> +	for (type = old_type + 1; type <= CURSEG_COLD_DATA; type++)
> +		if (v_ops->get_victim(sbi, &(curseg)->next_segno,
> +						BG_GC, type, SSR))
> +			return 1;
>  	return 0;
>  }
>  
> -- 
> 1.8.5.2

[-- Attachment #2: 0001-f2fs-find-data-segments-across-all-the-types.patch --]
[-- Type: text/plain, Size: 1439 bytes --]

>From 92b42757ca01d6c03c4af7bb6e169855605c59ae Mon Sep 17 00:00:00 2001
From: Jaegeuk Kim <jaegeuk@kernel.org>
Date: Wed, 22 Feb 2017 17:10:18 -0800
Subject: [PATCH 1/2] f2fs: find data segments across all the types

Previously, if type is CURSEG_HOT_DATA, we only check CURSEG_HOT_DATA only.
This patch fixes to search all the different types for SSR.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
 fs/f2fs/segment.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index f3d80ccd556f..605cda3e17e3 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1529,16 +1529,23 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int type)
 {
 	struct curseg_info *curseg = CURSEG_I(sbi, type);
 	const struct victim_selection *v_ops = DIRTY_I(sbi)->v_ops;
+	int i;
+
+	/* need_SSR() already forces to do this */
+	if (v_ops->get_victim(sbi, &(curseg)->next_segno, BG_GC, type, SSR))
+		return 1;
 
 	if (IS_NODESEG(type))
-		return v_ops->get_victim(sbi,
-				&(curseg)->next_segno, BG_GC, type, SSR);
+		return 0;
 
 	/* For data segments, let's do SSR more intensively */
-	for (; type >= CURSEG_HOT_DATA; type--)
+	for (i = CURSEG_HOT_DATA; i <= CURSEG_COLD_DATA; i++) {
+		if (i == type)
+			continue;
 		if (v_ops->get_victim(sbi, &(curseg)->next_segno,
-						BG_GC, type, SSR))
+						BG_GC, i, SSR))
 			return 1;
+	}
 	return 0;
 }
 
-- 
2.11.0


[-- Attachment #3: 0002-f2fs-do-SSR-for-node-segments-more-aggresively.patch --]
[-- Type: text/plain, Size: 1382 bytes --]

>From cf25da1cb6af3a516f96f6ea3edf98307b089397 Mon Sep 17 00:00:00 2001
From: Jaegeuk Kim <jaegeuk@kernel.org>
Date: Wed, 22 Feb 2017 17:02:32 -0800
Subject: [PATCH 2/2] f2fs: do SSR for node segments more aggresively

This patch gives more SSR chances for node blocks.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
 fs/f2fs/segment.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 605cda3e17e3..9f819eb4749e 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1529,17 +1529,22 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int type)
 {
 	struct curseg_info *curseg = CURSEG_I(sbi, type);
 	const struct victim_selection *v_ops = DIRTY_I(sbi)->v_ops;
-	int i;
+	int i, n;
 
 	/* need_SSR() already forces to do this */
 	if (v_ops->get_victim(sbi, &(curseg)->next_segno, BG_GC, type, SSR))
 		return 1;
 
-	if (IS_NODESEG(type))
-		return 0;
+	/* For node segments, let's do SSR more intensively */
+	if (IS_NODESEG(type)) {
+		i = CURSEG_HOT_NODE;
+		n = CURSEG_COLD_NODE;
+	} else {
+		i = CURSEG_HOT_DATA;
+		n = CURSEG_COLD_DATA;
+	}
 
-	/* For data segments, let's do SSR more intensively */
-	for (i = CURSEG_HOT_DATA; i <= CURSEG_COLD_DATA; i++) {
+	for (; i <= n; i++) {
 		if (i == type)
 			continue;
 		if (v_ops->get_victim(sbi, &(curseg)->next_segno,
-- 
2.11.0


  reply	other threads:[~2017-02-23  1:18 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-22 12:50 [PATCH 1/3] f2fs: clean up codes in get_ssr_segment Yunlong Song
2017-02-22 12:50 ` Yunlong Song
2017-02-22 12:50 ` [PATCH 2/3] f2fs: provide more chance to get node ssr Yunlong Song
2017-02-22 12:50   ` Yunlong Song
2017-02-22 12:50 ` [PATCH 3/3] f2fs: provide more chance for node and data to get ssr segment Yunlong Song
2017-02-22 12:50   ` Yunlong Song
2017-02-23  1:17   ` Jaegeuk Kim [this message]
2017-02-23  2:13     ` Yunlong Song
2017-02-23  2:13       ` Yunlong Song
2017-02-23  2:41       ` Yunlong Song
2017-02-23  2:41         ` Yunlong Song
2017-02-24  9:05     ` Chao Yu
2017-02-24  9:05       ` Chao Yu
2017-02-24  9:19       ` Yunlong Song
2017-02-24  9:19         ` Yunlong Song
2017-02-24 10:47         ` Chao Yu
2017-02-24 10:47           ` Chao Yu
2017-02-24 11:41           ` Yunlong Song
2017-02-24 11:41             ` Yunlong Song
2017-02-24 17:58             ` Jaegeuk Kim
     [not found]               ` <b5c6b4d.d7.15a7177d92d.Coremail.sylinux@163.com>
2017-02-24 20:05                 ` Jaegeuk Kim
2017-02-24 20:05                   ` Jaegeuk Kim
2017-02-25  2:16                   ` Yunlong Song
2017-02-25  2:16                     ` Yunlong Song
2017-02-23  0:41 ` [PATCH 1/3] f2fs: clean up codes in get_ssr_segment Jaegeuk Kim
2017-02-23  0:59   ` Jaegeuk Kim
2017-02-23  1:55     ` Yunlong Song
2017-02-23  1:55       ` Yunlong Song

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=20170223011754.GH4003@jaegeuk.local \
    --to=jaegeuk@kernel.org \
    --cc=bintian.wang@huawei.com \
    --cc=chao@kernel.org \
    --cc=cm224.lee@samsung.com \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miaoxie@huawei.com \
    --cc=sylinux@163.com \
    --cc=yuchao0@huawei.com \
    --cc=yunlong.song@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 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.