diff options
author | Chao Yu <yuchao0@huawei.com> | 2020-03-27 18:29:51 +0800 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2020-04-03 10:21:32 -0700 |
commit | aa576970fbbdbd58ac9f00ca8f16abb2f857fe7e (patch) | |
tree | ece0f41fdf84a79e621c62fcbff5c754dc2b040c | |
parent | 9b6ed143c19bfc6d697a982640422829e2a2c410 (diff) | |
download | lwn-aa576970fbbdbd58ac9f00ca8f16abb2f857fe7e.tar.gz lwn-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>
-rw-r--r-- | fs/f2fs/f2fs.h | 10 | ||||
-rw-r--r-- | fs/f2fs/file.c | 2 |
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; } |