summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2014-09-15 18:03:32 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2014-09-23 11:10:21 -0700
commit14cecc5cd6ed33ef3cb7328de904cc636dd390a4 (patch)
treef0de29f6c96b43157d0521e4b311503e24421a3d /fs
parent55cf9cb63f0e5439f208d78ed944de9a8df65011 (diff)
downloadlinux-14cecc5cd6ed33ef3cb7328de904cc636dd390a4.tar.gz
linux-14cecc5cd6ed33ef3cb7328de904cc636dd390a4.tar.bz2
linux-14cecc5cd6ed33ef3cb7328de904cc636dd390a4.zip
f2fs: skip punching hole in special condition
Now punching hole in directory is not supported in f2fs, so let's limit file type in punch_hole(). In addition, in punch_hole if offset is exceed file size, we should skip punching hole. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/f2fs/file.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index a95ba23e3bd3..ac8c6804097f 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -658,6 +658,13 @@ static int punch_hole(struct inode *inode, loff_t offset, loff_t len)
loff_t off_start, off_end;
int ret = 0;
+ if (!S_ISREG(inode->i_mode))
+ return -EOPNOTSUPP;
+
+ /* skip punching hole beyond i_size */
+ if (offset >= inode->i_size)
+ return ret;
+
ret = f2fs_convert_inline_data(inode, MAX_INLINE_DATA + 1, NULL);
if (ret)
return ret;