On 2016/12/27 20:04, Chao Yu wrote:
> On 2016/12/27 12:05, Yunlei He wrote:
>> This patch add a judgement before read, if the page has been
>> uptodate, move the block directly.
>>
>> Signed-off-by: Yunlei He <[email protected]>
>> ---
>> fs/f2fs/gc.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
>> index 88bfc3d..40776b4 100644
>> --- a/fs/f2fs/gc.c
>> +++ b/fs/f2fs/gc.c
>> @@ -602,6 +602,9 @@ static void move_encrypted_block(struct inode *inode,
>> block_t bidx,
>> goto recover_block;
>> }
>>
>> + if (PageUptodate(fio.encrypted_page))
>
> Seems we can't guarantee that the new allocated block address isn't been used
> by
> another GCed encrypted page last time with SSR mode, so the updated
> encrypted_page may contain other file's data?
Yes, you are right!
Thanks,
>
> Thanks,
>
>> + goto skip_read;
>> +
>> err = f2fs_submit_page_bio(&fio);
>> if (err)
>> goto put_page_out;
>> @@ -613,11 +616,13 @@ static void move_encrypted_block(struct inode *inode,
>> block_t bidx,
>> err = -EIO;
>> goto put_page_out;
>> }
>> +
>> if (unlikely(!PageUptodate(fio.encrypted_page))) {
>> err = -EIO;
>> goto put_page_out;
>> }
>>
>> +skip_read:
>> set_page_dirty(fio.encrypted_page);
>> f2fs_wait_on_page_writeback(fio.encrypted_page, DATA, true);
>> if (clear_page_dirty_for_io(fio.encrypted_page))
>>
>
>
> .
>
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel