]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
f2fs: convert inline_data for various fallocate
authorJaegeuk Kim <jaegeuk@kernel.org>
Wed, 17 Jun 2015 20:59:05 +0000 (13:59 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 4 Aug 2015 21:09:53 +0000 (14:09 -0700)
For newly added fallocate types, it should convert inline_data before handling
block swapping.

Reviewed-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/file.c

index b0f38c3b37f4d5577551e6d517e801a6f644ac09..fe8398f1d627bbd577d1adac0b73d069a14b22ba 100644 (file)
@@ -885,6 +885,14 @@ static int f2fs_collapse_range(struct inode *inode, loff_t offset, loff_t len)
        if (offset & (F2FS_BLKSIZE - 1) || len & (F2FS_BLKSIZE - 1))
                return -EINVAL;
 
+       f2fs_balance_fs(F2FS_I_SB(inode));
+
+       if (f2fs_has_inline_data(inode)) {
+               ret = f2fs_convert_inline_inode(inode);
+               if (ret)
+                       return ret;
+       }
+
        pg_start = offset >> PAGE_CACHE_SHIFT;
        pg_end = (offset + len) >> PAGE_CACHE_SHIFT;
 
@@ -1033,6 +1041,12 @@ static int f2fs_insert_range(struct inode *inode, loff_t offset, loff_t len)
 
        f2fs_balance_fs(sbi);
 
+       if (f2fs_has_inline_data(inode)) {
+               ret = f2fs_convert_inline_inode(inode);
+               if (ret)
+                       return ret;
+       }
+
        ret = truncate_blocks(inode, i_size_read(inode), true);
        if (ret)
                return ret;