lkml.org 
[lkml]   [2018]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.18 154/350] f2fs: clear PageError on the read path
    Date
    4.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jaegeuk Kim <jaegeuk@kernel.org>

    [ Upstream commit fb7d70db305a1446864227abf711b756568f8242 ]

    When running fault injection test, I hit somewhat wrong behavior in f2fs_gc ->
    gc_data_segment():

    0. fault injection generated some PageError'ed pages

    1. gc_data_segment
    -> f2fs_get_read_data_page(REQ_RAHEAD)

    2. move_data_page
    -> f2fs_get_lock_data_page()
    -> f2f_get_read_data_page()
    -> f2fs_submit_page_read()
    -> submit_bio(READ)
    -> return EIO due to PageError
    -> fail to move data

    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/f2fs/data.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    --- a/fs/f2fs/data.c
    +++ b/fs/f2fs/data.c
    @@ -80,7 +80,8 @@ static void __read_end_io(struct bio *bi
    /* PG_error was set if any post_read step failed */
    if (bio->bi_status || PageError(page)) {
    ClearPageUptodate(page);
    - SetPageError(page);
    + /* will re-read again later */
    + ClearPageError(page);
    } else {
    SetPageUptodate(page);
    }
    @@ -584,6 +585,7 @@ static int f2fs_submit_page_read(struct
    bio_put(bio);
    return -EFAULT;
    }
    + ClearPageError(page);
    __submit_bio(F2FS_I_SB(inode), bio, DATA);
    return 0;
    }
    @@ -1528,6 +1530,7 @@ submit_and_realloc:
    if (bio_add_page(bio, page, blocksize, 0) < blocksize)
    goto submit_and_realloc;

    + ClearPageError(page);
    last_block_in_bio = block_nr;
    goto next_page;
    set_error_page:

    \
     
     \ /
      Last update: 2018-11-12 00:32    [W:3.810 / U:6.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site