f2fs: fix to don't trigger writeback during recovery
authorChao Yu <yuchao0@huawei.com>
Sat, 26 May 2018 10:03:34 +0000 (18:03 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 31 May 2018 18:31:52 +0000 (11:31 -0700)
- f2fs_fill_super
 - recover_fsync_data
  - recover_data
   - del_fsync_inode
    - iput
     - iput_final
      - write_inode_now
       - f2fs_write_inode
        - f2fs_balance_fs
         - f2fs_balance_fs_bg
          - sync_dirty_inodes

With data_flush mount option, during recovery, in order to avoid entering
above writeback flow, let's detect recovery status and do skip in
f2fs_balance_fs_bg.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/segment.c

index bfbf66675ce2fbab6a71fd4714f46cea887706d5..7208978d772061519924f766e182610583f72a5f 100644 (file)
@@ -486,6 +486,9 @@ void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need)
 
 void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi)
 {
+       if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING)))
+               return;
+
        /* try to shrink extent cache when there is no enough memory */
        if (!available_free_memory(sbi, EXTENT_CACHE))
                f2fs_shrink_extent_tree(sbi, EXTENT_CACHE_SHRINK_NUMBER);