On 2015/9/9 9:11, Chao Yu wrote:
>> -----Original Message-----
>> From: He YunLei [mailto:[email protected]]
>> Sent: Wednesday, September 09, 2015 7:54 AM
>> To: Chao Yu
>> Cc: [email protected]; [email protected]; 
>> [email protected]
>> Subject: Re: [f2fs-dev] [PATCH] f2fs: add a judgment in add_discard_addrs
>>
>> On 2015/9/8 19:14, Chao Yu wrote:
>>> Hi Yunlei,
>>>
>>>> -----Original Message-----
>>>> From: Yunlei He [mailto:[email protected]]
>>>> Sent: Tuesday, September 08, 2015 6:51 PM
>>>> To: [email protected]; [email protected]; 
>>>> [email protected]
>>>> Cc: [email protected]; Yunlei He
>>>> Subject: [f2fs-dev] [PATCH] f2fs: add a judgment in add_discard_addrs
>>>>
>>>> CP_DISCARD traverse all segments in fstrim_range to add small discards,
>>>> it is better to select entry->len bigger than trim_minlen.
>>>
>>> If we mount with 'discard' option, f2fs will trigger real-time discard
>>> when do checkpoint. If we add judgment condition here, fragmented invalid
>>> blocks will not be discarded since we stop adding them in pending list
>>> through __add_discard_entry.
>>
>> This judgment condition is only valid for cp reason CP_DISCARD, and has no 
>> influence
>> to other checkpoint. The process of fstrim adds all invalid blocks in 
>> pending list and
>> deletes entries which len < trim_minlen when issue discard. Can we do the 
>> selection
>> when added?
>
> __add_discard_entry will try to merge small discards in pending list, and 
> merged discard
> may be the eligible candidate, so we'd better not skip that.
>
Yeah, I got it. But I think the probability of merge will not be too high.
Thanks,
> Thanks,
>
>>
>> Thanks,
>>
>>>
>>> Thanks,
>>>
>>>>
>>>> Signed-off-by: Yunlei He <[email protected]>
>>>> ---
>>>>    fs/f2fs/segment.c | 3 ++-
>>>>    1 file changed, 2 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
>>>> index 78e6d06..a0dab7a 100644
>>>> --- a/fs/f2fs/segment.c
>>>> +++ b/fs/f2fs/segment.c
>>>> @@ -599,7 +599,8 @@ static void add_discard_addrs(struct f2fs_sb_info 
>>>> *sbi, struct cp_control
>>>> *cpc)
>>>>                            break;
>>>>
>>>>                    end = __find_rev_next_zero_bit(dmap, max_blocks, start 
>>>> + 1);
>>>> -          __add_discard_entry(sbi, cpc, se, start, end);
>>>> +          if(force && cpc->trim_minlen >= (end - start))
>>>> +                  __add_discard_entry(sbi, cpc, se, start, end);
>>>>            }
>>>>    }
>>>>
>>>> --
>>>> 1.9.1
>>>
>>>
>>>
>
>
> .
>


------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to