aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSheng Yong <shengyong@oppo.com>2023-06-27 20:21:53 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2023-06-30 16:38:27 -0700
commit87a91a155902f2b652e272ad3ba4de3486af9229 (patch)
tree4df33abcabd9e40bd07dcc51afb229e66eefc3e2
parentc31e49615762a5fa0d14ffcfd5e2f1c206213a14 (diff)
downloadnet-next-87a91a155902f2b652e272ad3ba4de3486af9229.tar.gz
f2fs: only set release for file that has compressed data
If a file is not comprssed yet or does not have compressed data, for example, its data has a very low compression ratio, do not set FI_COMPRESS_RELEASED flag. Signed-off-by: Sheng Yong <shengyong@oppo.com> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fs/f2fs/file.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index b1a4de3b53e012..0f54c1ff02f712 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -3510,13 +3510,15 @@ static int f2fs_release_compress_blocks(struct file *filp, unsigned long arg)
if (ret)
goto out;
+ if (!atomic_read(&F2FS_I(inode)->i_compr_blocks)) {
+ ret = -EPERM;
+ goto out;
+ }
+
set_inode_flag(inode, FI_COMPRESS_RELEASED);
inode->i_ctime = current_time(inode);
f2fs_mark_inode_dirty_sync(inode, true);
- if (!atomic_read(&F2FS_I(inode)->i_compr_blocks))
- goto out;
-
f2fs_down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
filemap_invalidate_lock(inode->i_mapping);