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?

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
>
>
>


------------------------------------------------------------------------------
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to