From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Chao Yu <yuchao0@huawei.com>
Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH v2 5/5] f2fs: support age threshold based garbage collection
Date: Mon, 31 Aug 2020 11:01:43 -0700 [thread overview]
Message-ID: <20200831180143.GB3665231@google.com> (raw)
In-Reply-To: <7986af8c-1fe9-7140-f1c0-d8b4a58f702c@huawei.com>
Hi Chao,
Applied. Thanks.
On 08/31, Chao Yu wrote:
> Hi Jaegeuk,
>
> I've changed code a bit to fix some bugs, including:
> - gc_idle = 3 (GC_IDLE_AT) description
> - disallow set gc_idle to 3 if atgc is off
> - keep compatibility with checkpoint disabling
>
> Could you please check and merge below diff?
>
> From: Chao Yu <yuchao0@huawei.com>
>
> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> ---
> Documentation/ABI/testing/sysfs-fs-f2fs | 3 ++-
> fs/f2fs/gc.c | 12 +++++++++++-
> fs/f2fs/sysfs.c | 11 ++++++++---
> 3 files changed, 21 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs
> index 7f730c4c8df2..834d0becae6d 100644
> --- a/Documentation/ABI/testing/sysfs-fs-f2fs
> +++ b/Documentation/ABI/testing/sysfs-fs-f2fs
> @@ -22,7 +22,8 @@ Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
> Description: Controls the victim selection policy for garbage collection.
> Setting gc_idle = 0(default) will disable this option. Setting
> gc_idle = 1 will select the Cost Benefit approach & setting
> - gc_idle = 2 will select the greedy approach.
> + gc_idle = 2 will select the greedy approach & setting
> + gc_idle = 3 will select the age-threshold based approach.
>
> What: /sys/fs/f2fs/<disk>/reclaim_segments
> Date: October 2013
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index 6413886e52d4..3c0edb8b4cc5 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -388,6 +388,16 @@ static void add_victim_entry(struct f2fs_sb_info *sbi,
> unsigned long long mtime = 0;
> unsigned int i;
>
> + if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED)) {
> + if (p->gc_mode == GC_AT &&
> + get_valid_blocks(sbi, segno, true) == 0)
> + return;
> +
> + if (p->alloc_mode == AT_SSR &&
> + get_seg_entry(sbi, segno)->ckpt_valid_blocks == 0)
> + return;
> + }
> +
> for (i = 0; i < sbi->segs_per_sec; i++)
> mtime += get_seg_entry(sbi, start + i)->mtime;
> mtime = div_u64(mtime, sbi->segs_per_sec);
> @@ -721,7 +731,7 @@ static int get_victim_by_default(struct f2fs_sb_info *sbi,
> /* Don't touch checkpointed data */
> if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED) &&
> get_ckpt_valid_blocks(sbi, segno) &&
> - p.alloc_mode != SSR))
> + p.alloc_mode == LFS))
> goto next;
> if (gc_type == BG_GC && test_bit(secno, dirty_i->victim_secmap))
> goto next;
> diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
> index 88ed9969cc86..bacfa9c35e6b 100644
> --- a/fs/f2fs/sysfs.c
> +++ b/fs/f2fs/sysfs.c
> @@ -375,12 +375,17 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
> return count;
> }
> if (!strcmp(a->attr.name, "gc_idle")) {
> - if (t == GC_IDLE_CB)
> + if (t == GC_IDLE_CB) {
> sbi->gc_mode = GC_IDLE_CB;
> - else if (t == GC_IDLE_GREEDY)
> + } else if (t == GC_IDLE_GREEDY) {
> sbi->gc_mode = GC_IDLE_GREEDY;
> - else
> + } else if (t == GC_IDLE_AT) {
> + if (!sbi->am.atgc_enabled)
> + return -EINVAL;
> + sbi->gc_mode = GC_AT;
> + } else {
> sbi->gc_mode = GC_NORMAL;
> + }
> return count;
> }
>
> --
> 2.26.2
>
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
WARNING: multiple messages have this Message-ID (diff)
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Chao Yu <yuchao0@huawei.com>
Cc: linux-f2fs-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org, chao@kernel.org
Subject: Re: [PATCH v2 5/5] f2fs: support age threshold based garbage collection
Date: Mon, 31 Aug 2020 11:01:43 -0700 [thread overview]
Message-ID: <20200831180143.GB3665231@google.com> (raw)
In-Reply-To: <7986af8c-1fe9-7140-f1c0-d8b4a58f702c@huawei.com>
Hi Chao,
Applied. Thanks.
On 08/31, Chao Yu wrote:
> Hi Jaegeuk,
>
> I've changed code a bit to fix some bugs, including:
> - gc_idle = 3 (GC_IDLE_AT) description
> - disallow set gc_idle to 3 if atgc is off
> - keep compatibility with checkpoint disabling
>
> Could you please check and merge below diff?
>
> From: Chao Yu <yuchao0@huawei.com>
>
> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> ---
> Documentation/ABI/testing/sysfs-fs-f2fs | 3 ++-
> fs/f2fs/gc.c | 12 +++++++++++-
> fs/f2fs/sysfs.c | 11 ++++++++---
> 3 files changed, 21 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs
> index 7f730c4c8df2..834d0becae6d 100644
> --- a/Documentation/ABI/testing/sysfs-fs-f2fs
> +++ b/Documentation/ABI/testing/sysfs-fs-f2fs
> @@ -22,7 +22,8 @@ Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
> Description: Controls the victim selection policy for garbage collection.
> Setting gc_idle = 0(default) will disable this option. Setting
> gc_idle = 1 will select the Cost Benefit approach & setting
> - gc_idle = 2 will select the greedy approach.
> + gc_idle = 2 will select the greedy approach & setting
> + gc_idle = 3 will select the age-threshold based approach.
>
> What: /sys/fs/f2fs/<disk>/reclaim_segments
> Date: October 2013
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index 6413886e52d4..3c0edb8b4cc5 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -388,6 +388,16 @@ static void add_victim_entry(struct f2fs_sb_info *sbi,
> unsigned long long mtime = 0;
> unsigned int i;
>
> + if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED)) {
> + if (p->gc_mode == GC_AT &&
> + get_valid_blocks(sbi, segno, true) == 0)
> + return;
> +
> + if (p->alloc_mode == AT_SSR &&
> + get_seg_entry(sbi, segno)->ckpt_valid_blocks == 0)
> + return;
> + }
> +
> for (i = 0; i < sbi->segs_per_sec; i++)
> mtime += get_seg_entry(sbi, start + i)->mtime;
> mtime = div_u64(mtime, sbi->segs_per_sec);
> @@ -721,7 +731,7 @@ static int get_victim_by_default(struct f2fs_sb_info *sbi,
> /* Don't touch checkpointed data */
> if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED) &&
> get_ckpt_valid_blocks(sbi, segno) &&
> - p.alloc_mode != SSR))
> + p.alloc_mode == LFS))
> goto next;
> if (gc_type == BG_GC && test_bit(secno, dirty_i->victim_secmap))
> goto next;
> diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
> index 88ed9969cc86..bacfa9c35e6b 100644
> --- a/fs/f2fs/sysfs.c
> +++ b/fs/f2fs/sysfs.c
> @@ -375,12 +375,17 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
> return count;
> }
> if (!strcmp(a->attr.name, "gc_idle")) {
> - if (t == GC_IDLE_CB)
> + if (t == GC_IDLE_CB) {
> sbi->gc_mode = GC_IDLE_CB;
> - else if (t == GC_IDLE_GREEDY)
> + } else if (t == GC_IDLE_GREEDY) {
> sbi->gc_mode = GC_IDLE_GREEDY;
> - else
> + } else if (t == GC_IDLE_AT) {
> + if (!sbi->am.atgc_enabled)
> + return -EINVAL;
> + sbi->gc_mode = GC_AT;
> + } else {
> sbi->gc_mode = GC_NORMAL;
> + }
> return count;
> }
>
> --
> 2.26.2
>
next prev parent reply other threads:[~2020-08-31 18:02 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-04 13:14 [f2fs-dev] [PATCH v2 0/5] Support Age-Threshold based Garbage Collection for f2fs Chao Yu
2020-08-04 13:14 ` Chao Yu
2020-08-04 13:14 ` [f2fs-dev] [PATCH v2 1/5] f2fs: introduce inmem curseg Chao Yu
2020-08-04 13:14 ` Chao Yu
2020-08-04 13:14 ` [f2fs-dev] [PATCH v2 2/5] f2fs: record average update time of segment Chao Yu
2020-08-04 13:14 ` Chao Yu
2020-08-04 13:14 ` [f2fs-dev] [PATCH v2 3/5] f2fs: inherit mtime of original block during GC Chao Yu
2020-08-04 13:14 ` Chao Yu
2020-08-04 13:14 ` [f2fs-dev] [PATCH v2 4/5] f2fs: support 64-bits key in f2fs rb-tree node entry Chao Yu
2020-08-04 13:14 ` Chao Yu
2020-08-04 13:14 ` [f2fs-dev] [PATCH v2 5/5] f2fs: support age threshold based garbage collection Chao Yu
2020-08-04 13:14 ` Chao Yu
2020-08-25 19:34 ` [f2fs-dev] " Jaegeuk Kim
2020-08-25 19:34 ` Jaegeuk Kim
2020-08-26 6:48 ` [f2fs-dev] " Chao Yu
2020-08-26 6:48 ` Chao Yu
2020-08-31 6:59 ` [f2fs-dev] " Chao Yu
2020-08-31 6:59 ` Chao Yu
2020-08-31 18:01 ` Jaegeuk Kim [this message]
2020-08-31 18:01 ` Jaegeuk Kim
2020-09-01 3:24 ` [f2fs-dev] " Chao Yu
2020-09-01 3:24 ` 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=20200831180143.GB3665231@google.com \
--to=jaegeuk@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--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 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.