[v2] f2fs: do not allow to defragment files have FI_COMPRESS_RELEASED

Message ID 20230425164711.19826-1-frank.li@vivo.com
State New
Headers
Series [v2] f2fs: do not allow to defragment files have FI_COMPRESS_RELEASED |

Commit Message

李扬韬 April 25, 2023, 4:47 p.m. UTC
  If a file has FI_COMPRESS_RELEASED, all writes for it should not be
allowed.

Fixes: 5fdb322ff2c2 ("f2fs: add F2FS_IOC_DECOMPRESS_FILE and F2FS_IOC_COMPRESS_FILE")
Signed-off-by: Qi Han <hanqi@vivo.com>
Signed-off-by: Yangtao Li <frank.li@vivo.com>
---
 fs/f2fs/file.c | 5 +++++
 1 file changed, 5 insertions(+)
  

Comments

Chao Yu April 27, 2023, 9:46 a.m. UTC | #1
On 2023/4/26 0:47, Yangtao Li wrote:
> If a file has FI_COMPRESS_RELEASED, all writes for it should not be
> allowed.
> 
> Fixes: 5fdb322ff2c2 ("f2fs: add F2FS_IOC_DECOMPRESS_FILE and F2FS_IOC_COMPRESS_FILE")
> Signed-off-by: Qi Han <hanqi@vivo.com>
> Signed-off-by: Yangtao Li <frank.li@vivo.com>

Oh, I just see v2.

Reviewed-by: Chao Yu <chao@kernel.org>

Thanks,
  
Jaegeuk Kim April 27, 2023, 4:21 p.m. UTC | #2
On 04/27, Chao Yu wrote:
> On 2023/4/26 0:47, Yangtao Li wrote:
> > If a file has FI_COMPRESS_RELEASED, all writes for it should not be
> > allowed.
> > 
> > Fixes: 5fdb322ff2c2 ("f2fs: add F2FS_IOC_DECOMPRESS_FILE and F2FS_IOC_COMPRESS_FILE")
> > Signed-off-by: Qi Han <hanqi@vivo.com>
> > Signed-off-by: Yangtao Li <frank.li@vivo.com>
> 
> Oh, I just see v2.
> 
> Reviewed-by: Chao Yu <chao@kernel.org>

Applied with using goto for code consistency.

+       if (is_inode_flag_set(inode, FI_COMPRESS_RELEASED)) {
+               err = -EINVAL;
+               goto unlock_out;
+       }
+
        /* if in-place-update policy is enabled, don't waste time here */
        set_inode_flag(inode, FI_OPU_WRITE);
        if (f2fs_should_update_inplace(inode, NULL)) {
@@ -2712,6 +2717,7 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi,
        clear_inode_flag(inode, FI_SKIP_WRITES);
 out:
        clear_inode_flag(inode, FI_OPU_WRITE);
+unlock_out:
        inode_unlock(inode);
        if (!err)
                range->len = (u64)total << PAGE_SHIFT;

> 
> Thanks,
  
Chao Yu April 28, 2023, 1:03 a.m. UTC | #3
On 2023/4/28 0:21, Jaegeuk Kim wrote:
> On 04/27, Chao Yu wrote:
>> On 2023/4/26 0:47, Yangtao Li wrote:
>>> If a file has FI_COMPRESS_RELEASED, all writes for it should not be
>>> allowed.
>>>
>>> Fixes: 5fdb322ff2c2 ("f2fs: add F2FS_IOC_DECOMPRESS_FILE and F2FS_IOC_COMPRESS_FILE")
>>> Signed-off-by: Qi Han <hanqi@vivo.com>
>>> Signed-off-by: Yangtao Li <frank.li@vivo.com>
>>
>> Oh, I just see v2.
>>
>> Reviewed-by: Chao Yu <chao@kernel.org>
> 
> Applied with using goto for code consistency.

It makes sense,

Reviewed-by: Chao Yu <chao@kernel.org>

Thanks,

> 
> +       if (is_inode_flag_set(inode, FI_COMPRESS_RELEASED)) {
> +               err = -EINVAL;
> +               goto unlock_out;
> +       }
> +
>          /* if in-place-update policy is enabled, don't waste time here */
>          set_inode_flag(inode, FI_OPU_WRITE);
>          if (f2fs_should_update_inplace(inode, NULL)) {
> @@ -2712,6 +2717,7 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi,
>          clear_inode_flag(inode, FI_SKIP_WRITES);
>   out:
>          clear_inode_flag(inode, FI_OPU_WRITE);
> +unlock_out:
>          inode_unlock(inode);
>          if (!err)
>                  range->len = (u64)total << PAGE_SHIFT;
> 
>>
>> Thanks,
  

Patch

diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 5ac53d2627d2..46c62923f096 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -2593,6 +2593,11 @@  static int f2fs_defragment_range(struct f2fs_sb_info *sbi,
 
 	inode_lock(inode);
 
+	if (is_inode_flag_set(inode, FI_COMPRESS_RELEASED)) {
+		inode_unlock(inode);
+		return -EINVAL;
+	}
+
 	/* if in-place-update policy is enabled, don't waste time here */
 	set_inode_flag(inode, FI_OPU_WRITE);
 	if (f2fs_should_update_inplace(inode, NULL)) {