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?

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