f2fs: add f2fs_balance_fs for direct IO
authorHuang Ying <ying.huang@intel.com>
Sat, 12 Jul 2014 12:10:00 +0000 (20:10 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 25 Jul 2014 15:13:58 +0000 (08:13 -0700)
Otherwise, if a large amount of direct IO writes were done, the
segment allocation may be failed because no enough segments are gced.

Changes:

v2: add f2fs_balance_fs into __get_data_block instead of f2fs_direct_IO.

Signed-off-by: Huang, Ying <ying.huang@intel.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c

index 05154d6..c77c667 100644 (file)
@@ -626,8 +626,10 @@ static int __get_data_block(struct inode *inode, sector_t iblock,
        if (check_extent_cache(inode, pgofs, bh_result))
                goto out;
 
-       if (create)
+       if (create) {
+               f2fs_balance_fs(sbi);
                f2fs_lock_op(sbi);
+       }
 
        /* When reading holes, we need its node page */
        set_new_dnode(&dn, inode, NULL, NULL, 0);