summaryrefslogtreecommitdiffstats
path: root/fs/f2fs
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk.kim@samsung.com>2013-12-27 03:13:21 +0100
committerJaegeuk Kim <jaegeuk.kim@samsung.com>2014-01-06 08:42:12 +0100
commit8230a0a49fc3f587644b284e51ac092607aa74bf (patch)
treeefc0e5d58266395c758da8b777b7bc2637cee4d3 /fs/f2fs
parentf2fs: don't need to get f2fs_lock_op for the inline_data test (diff)
downloadlinux-8230a0a49fc3f587644b284e51ac092607aa74bf.tar.xz
linux-8230a0a49fc3f587644b284e51ac092607aa74bf.zip
f2fs: convert inline_data for punch_hole
In the punch_hole(), let's convert inline_data all the time for simplicity and to avoid potential deadlock conditions. It is pretty much not a big deal to do this. Reviewed-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs/f2fs')
-rw-r--r--fs/f2fs/file.c22
1 files changed, 3 insertions, 19 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 7ef2d6af24ce..f64a1c8291af 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -462,25 +462,9 @@ static int punch_hole(struct inode *inode, loff_t offset, loff_t len)
loff_t off_start, off_end;
int ret = 0;
- if (f2fs_has_inline_data(inode)) {
- struct page *page;
- unsigned flags = AOP_FLAG_NOFS;
- page = grab_cache_page_write_begin(inode->i_mapping, 0, flags);
- if (IS_ERR(page))
- return PTR_ERR(page);
- if (offset + len > MAX_INLINE_DATA) {
- ret = f2fs_convert_inline_data(inode, page, flags);
- f2fs_put_page(page, 1);
- if (ret)
- return ret;
- } else {
- zero_user_segment(page, offset, offset + len);
- SetPageUptodate(page);
- set_page_dirty(page);
- f2fs_put_page(page, 1);
- return ret;
- }
- }
+ ret = f2fs_convert_inline_data(inode, NULL, AOP_FLAG_NOFS);
+ if (ret)
+ return ret;
pg_start = ((unsigned long long) offset) >> PAGE_CACHE_SHIFT;
pg_end = ((unsigned long long) offset + len) >> PAGE_CACHE_SHIFT;