lkml.org 
[lkml]   [2022]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 112/475] f2fs: fix to avoid potential deadlock
    Date
    From: Chao Yu <chao@kernel.org>

    [ Upstream commit df77fbd8c5b222c680444801ffd20e8bbc90a56e ]

    Using f2fs_trylock_op() in f2fs_write_compressed_pages() to avoid potential
    deadlock like we did in f2fs_write_single_data_page().

    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/f2fs/data.c | 6 +++++-
    fs/f2fs/node.c | 6 +++++-
    2 files changed, 10 insertions(+), 2 deletions(-)

    diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
    index 1679f9c0b63b..773028921c48 100644
    --- a/fs/f2fs/data.c
    +++ b/fs/f2fs/data.c
    @@ -2467,8 +2467,12 @@ static int __f2fs_write_data_pages(struct address_space *mapping,
    /* to avoid spliting IOs due to mixed WB_SYNC_ALL and WB_SYNC_NONE */
    if (wbc->sync_mode == WB_SYNC_ALL)
    atomic_inc(&sbi->wb_sync_req[DATA]);
    - else if (atomic_read(&sbi->wb_sync_req[DATA]))
    + else if (atomic_read(&sbi->wb_sync_req[DATA])) {
    + /* to avoid potential deadlock */
    + if (current->plug)
    + blk_finish_plug(current->plug);
    goto skip_write;
    + }

    if (__should_serialize_io(inode, wbc)) {
    mutex_lock(&sbi->writepages);
    diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
    index 0cd1d51dde06..3dc7cc3d6ac6 100644
    --- a/fs/f2fs/node.c
    +++ b/fs/f2fs/node.c
    @@ -1995,8 +1995,12 @@ static int f2fs_write_node_pages(struct address_space *mapping,

    if (wbc->sync_mode == WB_SYNC_ALL)
    atomic_inc(&sbi->wb_sync_req[NODE]);
    - else if (atomic_read(&sbi->wb_sync_req[NODE]))
    + else if (atomic_read(&sbi->wb_sync_req[NODE])) {
    + /* to avoid potential deadlock */
    + if (current->plug)
    + blk_finish_plug(current->plug);
    goto skip_write;
    + }

    trace_f2fs_writepages(mapping->host, wbc, NODE);

    --
    2.34.1


    \
     
     \ /
      Last update: 2022-04-14 16:22    [W:2.193 / U:0.852 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site