aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/fs/f2fs
diff options
context:
space:
mode:
authorChao Yu <yuchao0@huawei.com>2020-03-27 18:29:51 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2020-04-03 10:21:32 -0700
commitaa576970fbbdbd58ac9f00ca8f16abb2f857fe7e (patch)
treeece0f41fdf84a79e621c62fcbff5c754dc2b040c /fs/f2fs
parentf2fs: add missing CONFIG_F2FS_FS_COMPRESSION (diff)
downloadwireguard-linux-aa576970fbbdbd58ac9f00ca8f16abb2f857fe7e.tar.xz
wireguard-linux-aa576970fbbdbd58ac9f00ca8f16abb2f857fe7e.zip
f2fs: fix to disable compression on directory
It needs to call f2fs_disable_compressed_file() to disable compression on directory. Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r--fs/f2fs/f2fs.h10
-rw-r--r--fs/f2fs/file.c2
2 files changed, 7 insertions, 5 deletions
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index c44afc598638..c84442eefc56 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -3849,10 +3849,12 @@ static inline u64 f2fs_disable_compressed_file(struct inode *inode)
if (!f2fs_compressed_file(inode))
return 0;
- if (get_dirty_pages(inode))
- return 1;
- if (fi->i_compr_blocks)
- return fi->i_compr_blocks;
+ if (S_ISREG(inode->i_mode)) {
+ if (get_dirty_pages(inode))
+ return 1;
+ if (fi->i_compr_blocks)
+ return fi->i_compr_blocks;
+ }
fi->i_flags &= ~F2FS_COMPR_FL;
stat_dec_compr_inode(inode);
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 1476a3bc6317..6cb3c6cae7cd 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1815,7 +1815,7 @@ static int f2fs_setflags_common(struct inode *inode, u32 iflags, u32 mask)
}
if ((iflags ^ masked_flags) & F2FS_COMPR_FL) {
- if (S_ISREG(inode->i_mode) && (masked_flags & F2FS_COMPR_FL)) {
+ if (masked_flags & F2FS_COMPR_FL) {
if (f2fs_disable_compressed_file(inode))
return -EINVAL;
}