f2fs: use inode mutex to keep atomicity of f2fs_falloc
authorChao Yu <chao2.yu@samsung.com>
Tue, 28 Jan 2014 02:29:26 +0000 (10:29 +0800)
committerJaegeuk Kim <jaegeuk.kim@samsung.com>
Mon, 17 Feb 2014 05:58:53 +0000 (14:58 +0900)
Previously without protection of inode mutex, f2fs_falloc and other data
correlated operations will interfere with each other.
So let's use inode mutex to keep atomicity of f2fs_falloc.

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

index 0dfcef53a6ed830e442f8c174ea166b0d1b2eabd..00f937ec4794b289a7f2ccfb9320b8a34a744522 100644 (file)
@@ -560,6 +560,8 @@ static long f2fs_fallocate(struct file *file, int mode,
        if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE))
                return -EOPNOTSUPP;
 
+       mutex_lock(&inode->i_mutex);
+
        if (mode & FALLOC_FL_PUNCH_HOLE)
                ret = punch_hole(inode, offset, len);
        else
@@ -569,6 +571,9 @@ static long f2fs_fallocate(struct file *file, int mode,
                inode->i_mtime = inode->i_ctime = CURRENT_TIME;
                mark_inode_dirty(inode);
        }
+
+       mutex_unlock(&inode->i_mutex);
+
        trace_f2fs_fallocate(inode, mode, offset, len, ret);
        return ret;
 }