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

Reply via email to