>-----Original Message-----
>From: Jaegeuk Kim [mailto:jaeg...@kernel.org]
>Sent: Friday, April 20, 2018 11:41 AM
>To: Yuchao (T)
>Cc: heyunlei; linux-f2fs-devel@lists.sourceforge.net; Wangbintian; 
>Zhangdianfang (Euler)
>Subject: Re: [f2fs-dev][PATCH v2] f2fs: use cur_map instead of ckpt_map
>
>On 04/20, Chao Yu wrote:
>> On 2018/4/20 11:26, Jaegeuk Kim wrote:
>> > On 04/20, heyunlei wrote:
>> >>
>> >>
>> >>> -----Original Message-----
>> >>> From: Yuchao (T)
>> >>> Sent: Friday, April 13, 2018 9:12 AM
>> >>> To: Jaegeuk Kim; heyunlei
>> >>> Cc: linux-f2fs-devel@lists.sourceforge.net; Wangbintian; Zhangdianfang 
>> >>> (Euler)
>> >>> Subject: Re: [f2fs-dev][PATCH v2] f2fs: use cur_map instead of ckpt_map
>> >>>
>> >>> On 2018/4/13 6:37, Jaegeuk Kim wrote:
>> >>>> On 04/10, Yunlei He wrote:
>> >>>>> In flush_sit_entries::add_discard_addrs path, cur_map and ckpt_map
>> >>>>> are the same, but in exist_trim_candidates::add_discard_addrs,
>> >>>>> cur_map is updated one, and newer than ckpt_map, so we need to use
>> >>>>> cur_map to check whether there are discard candidates.
>> >>>>>
>> >>>>> v1->v2: one problem of check discard candidates reported by Chao,
>> >>>>> besides, update commit message.
>> >>>>>
>> >>>>> Signed-off-by: Yunlei He <heyun...@huawei.com>
>> >>>>> ---
>> >>>>>  fs/f2fs/segment.c | 2 +-
>> >>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> >>>>>
>> >>>>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
>> >>>>> index 5854cc4..f5d0499 100644
>> >>>>> --- a/fs/f2fs/segment.c
>> >>>>> +++ b/fs/f2fs/segment.c
>> >>>>> @@ -1559,7 +1559,7 @@ static bool add_discard_addrs(struct 
>> >>>>> f2fs_sb_info *sbi, struct cp_control *cpc,
>> >>>>>
>> >>>>>        /* SIT_VBLOCK_MAP_SIZE should be multiple of sizeof(unsigned 
>> >>>>> long) */
>> >>>>>        for (i = 0; i < entries; i++)
>> >>>>> -              dmap[i] = force ? ~ckpt_map[i] & ~discard_map[i] :
>> >>>>> +              dmap[i] = force ? ~cur_map[i] & ~discard_map[i] :
>> >>>>
>> >>>> NAK. We're able to loose data for roll-forward recovery.
>> >> Ping
>> >>
>> >> Thanks.
>> >>>
>> >>> Actually, in fstrim flow (force == 1), cur_map is complete the same as 
>> >>> ckpt_map.
>> >>> Do you suffer data corruption during testing this patch?
>> >
>> > So, we don't need this patch, IIUC.
>>
>> No, in precheck flow, we haven't flush cur_map to ckpt_map, so they are 
>> different.
>
>Then, what if power-cut happens between exist_trim_candidates() and
>do_checkpoint()?

Discards issued after do_checkpoint:
i.  new cp write ok, discard will not affect recovery
ii.  new cp write failed(including power-cut), discards will be released, will 
not affet recovery too?

Anything I missing?

Thanks.
>
>>
>> - fstrim
>>  - exist_trim_candidates
>>   - add_discard_addrs
>>
>> >
>> >>>
>> >>> Thanks,
>> >>>
>> >>>>
>> >>>>>                                (cur_map[i] ^ ckpt_map[i]) & 
>> >>>>> ckpt_map[i];
>> >>>>>
>> >>>>>        while (force || SM_I(sbi)->dcc_info->nr_discards <=
>> >>>>> --
>> >>>>> 1.9.1
>> >>>>
>> >>>> .
>> >>>>
>> >
>> > .
>> >

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to