* [PATCH] f2fs: fix to correct freed section number during gc
@ 2015-09-22 13:18 Chao Yu
2015-09-22 22:53 ` Jaegeuk Kim
0 siblings, 1 reply; 5+ messages in thread
From: Chao Yu @ 2015-09-22 13:18 UTC (permalink / raw)
To: Jaegeuk Kim; +Cc: linux-f2fs-devel, linux-kernel
We pass 'nfree' to has_not_enough_free_secs to check whether there is
enough free section, but 'nfree' indicates the number of segment gced,
should alter the value to section number.
Signed-off-by: Chao Yu <chao2.yu@samsung.com>
---
fs/f2fs/gc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index e932740..7ad2a60 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -817,7 +817,8 @@ gc_more:
if (unlikely(f2fs_cp_error(sbi)))
goto stop;
- if (gc_type == BG_GC && has_not_enough_free_secs(sbi, nfree)) {
+ if (gc_type == BG_GC &&
+ has_not_enough_free_secs(sbi, nfree / sbi->segs_per_sec)) {
gc_type = FG_GC;
if (__get_victim(sbi, &segno, gc_type) || prefree_segments(sbi))
write_checkpoint(sbi, &cpc);
@@ -839,7 +840,7 @@ gc_more:
if (gc_type == FG_GC)
sbi->cur_victim_sec = NULL_SEGNO;
- if (has_not_enough_free_secs(sbi, nfree))
+ if (has_not_enough_free_secs(sbi, nfree / sbi->segs_per_sec))
goto gc_more;
if (gc_type == FG_GC)
--
2.5.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] f2fs: fix to correct freed section number during gc
2015-09-22 13:18 [PATCH] f2fs: fix to correct freed section number during gc Chao Yu
@ 2015-09-22 22:53 ` Jaegeuk Kim
2015-09-23 10:11 ` Chao Yu
0 siblings, 1 reply; 5+ messages in thread
From: Jaegeuk Kim @ 2015-09-22 22:53 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-f2fs-devel, linux-kernel
Hi Chao,
On Tue, Sep 22, 2015 at 09:18:18PM +0800, Chao Yu wrote:
> We pass 'nfree' to has_not_enough_free_secs to check whether there is
> enough free section, but 'nfree' indicates the number of segment gced,
> should alter the value to section number.
Yeah, but I think we need to increase nfree only when an entire section is gced
completely, since sometimes nfree can be increased across sections.
Thanks,
>
> Signed-off-by: Chao Yu <chao2.yu@samsung.com>
> ---
> fs/f2fs/gc.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index e932740..7ad2a60 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -817,7 +817,8 @@ gc_more:
> if (unlikely(f2fs_cp_error(sbi)))
> goto stop;
>
> - if (gc_type == BG_GC && has_not_enough_free_secs(sbi, nfree)) {
> + if (gc_type == BG_GC &&
> + has_not_enough_free_secs(sbi, nfree / sbi->segs_per_sec)) {
> gc_type = FG_GC;
> if (__get_victim(sbi, &segno, gc_type) || prefree_segments(sbi))
> write_checkpoint(sbi, &cpc);
> @@ -839,7 +840,7 @@ gc_more:
> if (gc_type == FG_GC)
> sbi->cur_victim_sec = NULL_SEGNO;
>
> - if (has_not_enough_free_secs(sbi, nfree))
> + if (has_not_enough_free_secs(sbi, nfree / sbi->segs_per_sec))
> goto gc_more;
>
> if (gc_type == FG_GC)
> --
> 2.5.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH] f2fs: fix to correct freed section number during gc
2015-09-22 22:53 ` Jaegeuk Kim
@ 2015-09-23 10:11 ` Chao Yu
2015-09-23 21:08 ` Jaegeuk Kim
0 siblings, 1 reply; 5+ messages in thread
From: Chao Yu @ 2015-09-23 10:11 UTC (permalink / raw)
To: 'Jaegeuk Kim'; +Cc: linux-f2fs-devel, linux-kernel
Hi Jaegeuk,
> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> Sent: Wednesday, September 23, 2015 6:54 AM
> To: Chao Yu
> Cc: linux-f2fs-devel@lists.sourceforge.net; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH] f2fs: fix to correct freed section number during gc
>
> Hi Chao,
>
> On Tue, Sep 22, 2015 at 09:18:18PM +0800, Chao Yu wrote:
> > We pass 'nfree' to has_not_enough_free_secs to check whether there is
> > enough free section, but 'nfree' indicates the number of segment gced,
> > should alter the value to section number.
>
> Yeah, but I think we need to increase nfree only when an entire section is gced
> completely, since sometimes nfree can be increased across sections.
Agree, I will fix that.
Still have one question, for foreground gc, why would we give up retry writing
out pages of last victim, but trying to select another victim for cleanup?
Will new introduced method cause long latency for caller than before?
Thanks,
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] f2fs: fix to correct freed section number during gc
2015-09-23 10:11 ` Chao Yu
@ 2015-09-23 21:08 ` Jaegeuk Kim
2015-09-25 12:43 ` Chao Yu
0 siblings, 1 reply; 5+ messages in thread
From: Jaegeuk Kim @ 2015-09-23 21:08 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-f2fs-devel, linux-kernel
Hi Chao,
On Wed, Sep 23, 2015 at 06:11:36PM +0800, Chao Yu wrote:
> Hi Jaegeuk,
>
> > -----Original Message-----
> > From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> > Sent: Wednesday, September 23, 2015 6:54 AM
> > To: Chao Yu
> > Cc: linux-f2fs-devel@lists.sourceforge.net; linux-kernel@vger.kernel.org
> > Subject: Re: [PATCH] f2fs: fix to correct freed section number during gc
> >
> > Hi Chao,
> >
> > On Tue, Sep 22, 2015 at 09:18:18PM +0800, Chao Yu wrote:
> > > We pass 'nfree' to has_not_enough_free_secs to check whether there is
> > > enough free section, but 'nfree' indicates the number of segment gced,
> > > should alter the value to section number.
> >
> > Yeah, but I think we need to increase nfree only when an entire section is gced
> > completely, since sometimes nfree can be increased across sections.
>
> Agree, I will fix that.
>
> Still have one question, for foreground gc, why would we give up retry writing
> out pages of last victim, but trying to select another victim for cleanup?
> Will new introduced method cause long latency for caller than before?
Hmm. Very occasionally, I've seen that gc goes into an infinite loop to clean up
one victim. In order to avoid that, I added giving up and then doing gc again.
I think there is no problem in normal cases. Even in an abnormal case, I expect
that next victim would be selected again because that should have lowest moving
cost.
>
> Thanks,
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] f2fs: fix to correct freed section number during gc
2015-09-23 21:08 ` Jaegeuk Kim
@ 2015-09-25 12:43 ` Chao Yu
0 siblings, 0 replies; 5+ messages in thread
From: Chao Yu @ 2015-09-25 12:43 UTC (permalink / raw)
To: Jaegeuk Kim; +Cc: linux-kernel, linux-f2fs-devel
Hi Jaegeuk,
> On Sep 24, 2015, at 5:08 AM, Jaegeuk Kim <jaegeuk@kernel.org> wrote:
>
> Hi Chao,
>
> On Wed, Sep 23, 2015 at 06:11:36PM +0800, Chao Yu wrote:
>> Hi Jaegeuk,
>>
>>> -----Original Message-----
>>> From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
>>> Sent: Wednesday, September 23, 2015 6:54 AM
>>> To: Chao Yu
>>> Cc: linux-f2fs-devel@lists.sourceforge.net; linux-kernel@vger.kernel.org
>>> Subject: Re: [PATCH] f2fs: fix to correct freed section number during gc
>>>
>>> Hi Chao,
>>>
>>> On Tue, Sep 22, 2015 at 09:18:18PM +0800, Chao Yu wrote:
>>>> We pass 'nfree' to has_not_enough_free_secs to check whether there is
>>>> enough free section, but 'nfree' indicates the number of segment gced,
>>>> should alter the value to section number.
>>>
>>> Yeah, but I think we need to increase nfree only when an entire section is gced
>>> completely, since sometimes nfree can be increased across sections.
>>
>> Agree, I will fix that.
>>
>> Still have one question, for foreground gc, why would we give up retry writing
>> out pages of last victim, but trying to select another victim for cleanup?
>> Will new introduced method cause long latency for caller than before?
>
> Hmm. Very occasionally, I've seen that gc goes into an infinite loop to clean up
> one victim. In order to avoid that, I added giving up and then doing gc again.
> I think there is no problem in normal cases. Even in an abnormal case, I expect
> that next victim would be selected again because that should have lowest moving
> cost.
Got it, thanks for your explanation! :)
I have sent the v2 patch, please help to review.
Thanks,
>
>>
>> Thanks,
>
> ------------------------------------------------------------------------------
> Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
> Get real-time metrics from all of your servers, apps and tools
> in one place.
> SourceForge users - Click here to start your Free Trial of Datadog now!
> http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
------------------------------------------------------------------------------
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-09-25 12:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-22 13:18 [PATCH] f2fs: fix to correct freed section number during gc Chao Yu
2015-09-22 22:53 ` Jaegeuk Kim
2015-09-23 10:11 ` Chao Yu
2015-09-23 21:08 ` Jaegeuk Kim
2015-09-25 12:43 ` Chao Yu
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).