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