f2fs: allow to set compression for inlined file
authorJaegeuk Kim <jaegeuk@kernel.org>
Mon, 24 Oct 2022 23:00:35 +0000 (16:00 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:31 +0000 (13:32 +0100)
[ Upstream commit a995627e6dd81d4485d40ce64880017a080d71e6 ]

The below commit disallows to set compression on empty created file which
has a inline_data. Let's fix it.

Fixes: 7165841d578e ("f2fs: fix to check inline_data during compressed inode conversion")
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/f2fs/file.c

index 82cda12..f96bbfa 100644 (file)
@@ -1915,6 +1915,10 @@ static int f2fs_setflags_common(struct inode *inode, u32 iflags, u32 mask)
                        if (!f2fs_disable_compressed_file(inode))
                                return -EINVAL;
                } else {
+                       /* try to convert inline_data to support compression */
+                       int err = f2fs_convert_inline_inode(inode);
+                       if (err)
+                               return err;
                        if (!f2fs_may_compress(inode))
                                return -EINVAL;
                        if (S_ISREG(inode->i_mode) && F2FS_HAS_BLOCKS(inode))