lkml.org 
[lkml]   [2022]   [Feb]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 09/11] f2fs: replace congestion_wait() calls with io_schedule_timeout()
    From
    Date
    As congestion is no longer tracked, congestion_wait() is effectively
    equivalent to io_schedule_timeout().
    So introduce f2fs_io_schedule_timeout() which sets TASK_UNINTERRUPTIBLE
    and call that instead.

    Signed-off-by: NeilBrown <neilb@suse.de>
    ---
    fs/f2fs/compress.c | 4 +---
    fs/f2fs/data.c | 3 +--
    fs/f2fs/f2fs.h | 6 ++++++
    fs/f2fs/segment.c | 8 +++-----
    fs/f2fs/super.c | 6 ++----
    5 files changed, 13 insertions(+), 14 deletions(-)

    diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c
    index d0c3aeba5945..2f95559025ad 100644
    --- a/fs/f2fs/compress.c
    +++ b/fs/f2fs/compress.c
    @@ -1505,9 +1505,7 @@ static int f2fs_write_raw_pages(struct compress_ctx *cc,
    if (IS_NOQUOTA(cc->inode))
    return 0;
    ret = 0;
    - cond_resched();
    - congestion_wait(BLK_RW_ASYNC,
    - DEFAULT_IO_TIMEOUT);
    + f2fs_io_schedule_timeout(DEFAULT_IO_TIMEOUT);
    goto retry_write;
    }
    return ret;
    diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
    index 8c417864c66a..d428ddfd42ee 100644
    --- a/fs/f2fs/data.c
    +++ b/fs/f2fs/data.c
    @@ -3047,8 +3047,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping,
    } else if (ret == -EAGAIN) {
    ret = 0;
    if (wbc->sync_mode == WB_SYNC_ALL) {
    - cond_resched();
    - congestion_wait(BLK_RW_ASYNC,
    + f2fs_io_schedule_timeout(
    DEFAULT_IO_TIMEOUT);
    goto retry_write;
    }
    diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
    index 68b44015514f..467f5dbdc7d1 100644
    --- a/fs/f2fs/f2fs.h
    +++ b/fs/f2fs/f2fs.h
    @@ -4426,6 +4426,12 @@ static inline bool f2fs_block_unit_discard(struct f2fs_sb_info *sbi)
    return F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_BLOCK;
    }

    +static inline void f2fs_io_schedule_timeout(long timeout)
    +{
    + set_current_state(TASK_UNINTERRUPTIBLE);
    + io_schedule_timeout(timeout);
    +}
    +
    #define EFSBADCRC EBADMSG /* Bad CRC detected */
    #define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */

    diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
    index 1dabc8244083..6ff20da44ad7 100644
    --- a/fs/f2fs/segment.c
    +++ b/fs/f2fs/segment.c
    @@ -313,8 +313,7 @@ void f2fs_drop_inmem_pages_all(struct f2fs_sb_info *sbi, bool gc_failure)
    skip:
    iput(inode);
    }
    - congestion_wait(BLK_RW_ASYNC, DEFAULT_IO_TIMEOUT);
    - cond_resched();
    + f2fs_io_schedule_timeout(DEFAULT_IO_TIMEOUT);
    if (gc_failure) {
    if (++looped >= count)
    return;
    @@ -803,8 +802,7 @@ int f2fs_flush_device_cache(struct f2fs_sb_info *sbi)
    do {
    ret = __submit_flush_wait(sbi, FDEV(i).bdev);
    if (ret)
    - congestion_wait(BLK_RW_ASYNC,
    - DEFAULT_IO_TIMEOUT);
    + f2fs_io_schedule_timeout(DEFAULT_IO_TIMEOUT);
    } while (ret && --count);

    if (ret) {
    @@ -3133,7 +3131,7 @@ static unsigned int __issue_discard_cmd_range(struct f2fs_sb_info *sbi,
    blk_finish_plug(&plug);
    mutex_unlock(&dcc->cmd_lock);
    trimmed += __wait_all_discard_cmd(sbi, NULL);
    - congestion_wait(BLK_RW_ASYNC, DEFAULT_IO_TIMEOUT);
    + f2fs_io_schedule_timeout(DEFAULT_IO_TIMEOUT);
    goto next;
    }
    skip:
    diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
    index baefd398ec1a..ebd32daf052c 100644
    --- a/fs/f2fs/super.c
    +++ b/fs/f2fs/super.c
    @@ -2135,8 +2135,7 @@ static void f2fs_enable_checkpoint(struct f2fs_sb_info *sbi)
    /* we should flush all the data to keep data consistency */
    do {
    sync_inodes_sb(sbi->sb);
    - cond_resched();
    - congestion_wait(BLK_RW_ASYNC, DEFAULT_IO_TIMEOUT);
    + f2fs_io_schedule_timeout(DEFAULT_IO_TIMEOUT);
    } while (get_pages(sbi, F2FS_DIRTY_DATA) && retry--);

    if (unlikely(retry < 0))
    @@ -2504,8 +2503,7 @@ static ssize_t f2fs_quota_write(struct super_block *sb, int type,
    &page, &fsdata);
    if (unlikely(err)) {
    if (err == -ENOMEM) {
    - congestion_wait(BLK_RW_ASYNC,
    - DEFAULT_IO_TIMEOUT);
    + f2fs_io_schedule_timeout(DEFAULT_IO_TIMEOUT);
    goto retry;
    }
    set_sbi_flag(F2FS_SB(sb), SBI_QUOTA_NEED_REPAIR);

    \
     
     \ /
      Last update: 2022-02-10 06:43    [W:2.844 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site