2022-10-25 01:18:23

by Jaegeuk Kim

[permalink] [raw]
Subject: [PATCH] f2fs: allow to set compression for inlined file

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")
Signed-off-by: Jaegeuk Kim <[email protected]>
---
fs/f2fs/file.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 1c4004c9245f..304fe08edc61 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1915,6 +1915,9 @@ 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 */
+ f2fs_convert_inline_inode(inode);
+
if (!f2fs_may_compress(inode))
return -EINVAL;
if (S_ISREG(inode->i_mode) && F2FS_HAS_BLOCKS(inode))
--
2.38.0.135.g90850a2211-goog


2022-10-25 07:50:31

by Chao Yu

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH] f2fs: allow to set compression for inlined file

On 2022/10/25 7:36, Jaegeuk Kim wrote:
> 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")
> Signed-off-by: Jaegeuk Kim <[email protected]>
> ---
> fs/f2fs/file.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
> index 1c4004c9245f..304fe08edc61 100644
> --- a/fs/f2fs/file.c
> +++ b/fs/f2fs/file.c
> @@ -1915,6 +1915,9 @@ 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 */
> + f2fs_convert_inline_inode(inode);

It needs to check return value of f2fs_convert_inline_inode()?

Thanks,

> +
> if (!f2fs_may_compress(inode))
> return -EINVAL;
> if (S_ISREG(inode->i_mode) && F2FS_HAS_BLOCKS(inode))

2022-10-25 18:34:14

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH] f2fs: allow to set compression for inlined file

On 10/25, Chao Yu wrote:
> On 2022/10/25 7:36, Jaegeuk Kim wrote:
> > 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")
> > Signed-off-by: Jaegeuk Kim <[email protected]>
> > ---
> > fs/f2fs/file.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
> > index 1c4004c9245f..304fe08edc61 100644
> > --- a/fs/f2fs/file.c
> > +++ b/fs/f2fs/file.c
> > @@ -1915,6 +1915,9 @@ 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 */
> > + f2fs_convert_inline_inode(inode);
>
> It needs to check return value of f2fs_convert_inline_inode()?

I intended to catch that in the below checks?

>
> Thanks,
>
> > +
> > if (!f2fs_may_compress(inode))
> > return -EINVAL;
> > if (S_ISREG(inode->i_mode) && F2FS_HAS_BLOCKS(inode))

2022-10-26 01:34:18

by Chao Yu

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH] f2fs: allow to set compression for inlined file

On 2022/10/26 1:46, Jaegeuk Kim wrote:
> On 10/25, Chao Yu wrote:
>> On 2022/10/25 7:36, Jaegeuk Kim wrote:
>>> 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")
>>> Signed-off-by: Jaegeuk Kim <[email protected]>
>>> ---
>>> fs/f2fs/file.c | 3 +++
>>> 1 file changed, 3 insertions(+)
>>>
>>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
>>> index 1c4004c9245f..304fe08edc61 100644
>>> --- a/fs/f2fs/file.c
>>> +++ b/fs/f2fs/file.c
>>> @@ -1915,6 +1915,9 @@ 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 */
>>> + f2fs_convert_inline_inode(inode);
>>
>> It needs to check return value of f2fs_convert_inline_inode()?
>
> I intended to catch that in the below checks?

But it may hide the real error number, e.g. -ENOMEM returned from
f2fs_convert_inline_inode()?

Thanks,

>
>>
>> Thanks,
>>
>>> +
>>> if (!f2fs_may_compress(inode))
>>> return -EINVAL;
>>> if (S_ISREG(inode->i_mode) && F2FS_HAS_BLOCKS(inode))

2022-10-26 17:15:33

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [PATCH v2] f2fs: allow to set compression for inlined file

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")
Signed-off-by: Jaegeuk Kim <[email protected]>
---
Change log from v1:
- add returning an error

fs/f2fs/file.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 1c4004c9245f..8cd52b0965b1 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -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))
--
2.38.0.135.g90850a2211-goog


2022-10-26 17:31:01

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH] f2fs: allow to set compression for inlined file

On 10/26, Chao Yu wrote:
> On 2022/10/26 1:46, Jaegeuk Kim wrote:
> > On 10/25, Chao Yu wrote:
> > > On 2022/10/25 7:36, Jaegeuk Kim wrote:
> > > > 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")
> > > > Signed-off-by: Jaegeuk Kim <[email protected]>
> > > > ---
> > > > fs/f2fs/file.c | 3 +++
> > > > 1 file changed, 3 insertions(+)
> > > >
> > > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
> > > > index 1c4004c9245f..304fe08edc61 100644
> > > > --- a/fs/f2fs/file.c
> > > > +++ b/fs/f2fs/file.c
> > > > @@ -1915,6 +1915,9 @@ 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 */
> > > > + f2fs_convert_inline_inode(inode);
> > >
> > > It needs to check return value of f2fs_convert_inline_inode()?
> >
> > I intended to catch that in the below checks?
>
> But it may hide the real error number, e.g. -ENOMEM returned from
> f2fs_convert_inline_inode()?

Fair enough. Let me send v2.

>
> Thanks,
>
> >
> > >
> > > Thanks,
> > >
> > > > +
> > > > if (!f2fs_may_compress(inode))
> > > > return -EINVAL;
> > > > if (S_ISREG(inode->i_mode) && F2FS_HAS_BLOCKS(inode))

2022-10-27 01:57:35

by Chao Yu

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH v2] f2fs: allow to set compression for inlined file

On 2022/10/27 1:06, Jaegeuk Kim wrote:
> 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")
> Signed-off-by: Jaegeuk Kim <[email protected]>

Reviewed-by: Chao Yu <[email protected]>

Thanks,