2020-03-25 09:28:39

by Chao Yu

[permalink] [raw]
Subject: [PATCH RFC] f2fs: don't inline compressed inode

f2fs_may_inline_data() only check compressed flag on current inode
rather than on parent inode, however at this time compressed flag
has not been inherited yet.

Signed-off-by: Chao Yu <[email protected]>
---

Jaegeuk,

I'm not sure about this, whether inline_data flag can be compatible with
compress flag, thoughts?

fs/f2fs/namei.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index f54119da2217..3807d1b4c4bc 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -86,7 +86,8 @@ static struct inode *f2fs_new_inode(struct inode *dir, umode_t mode)
if (test_opt(sbi, INLINE_XATTR))
set_inode_flag(inode, FI_INLINE_XATTR);

- if (test_opt(sbi, INLINE_DATA) && f2fs_may_inline_data(inode))
+ if (test_opt(sbi, INLINE_DATA) && f2fs_may_inline_data(inode) &&
+ !f2fs_compressed_file(dir))
set_inode_flag(inode, FI_INLINE_DATA);
if (f2fs_may_inline_dentry(inode))
set_inode_flag(inode, FI_INLINE_DENTRY);
--
2.18.0.rc1


2020-03-25 15:58:58

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [PATCH RFC] f2fs: don't inline compressed inode

On 03/25, Chao Yu wrote:
> f2fs_may_inline_data() only check compressed flag on current inode
> rather than on parent inode, however at this time compressed flag
> has not been inherited yet.

When write() or other allocation happens, it'll be reset.

>
> Signed-off-by: Chao Yu <[email protected]>
> ---
>
> Jaegeuk,
>
> I'm not sure about this, whether inline_data flag can be compatible with
> compress flag, thoughts?
>
> fs/f2fs/namei.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
> index f54119da2217..3807d1b4c4bc 100644
> --- a/fs/f2fs/namei.c
> +++ b/fs/f2fs/namei.c
> @@ -86,7 +86,8 @@ static struct inode *f2fs_new_inode(struct inode *dir, umode_t mode)
> if (test_opt(sbi, INLINE_XATTR))
> set_inode_flag(inode, FI_INLINE_XATTR);
>
> - if (test_opt(sbi, INLINE_DATA) && f2fs_may_inline_data(inode))
> + if (test_opt(sbi, INLINE_DATA) && f2fs_may_inline_data(inode) &&
> + !f2fs_compressed_file(dir))
> set_inode_flag(inode, FI_INLINE_DATA);
> if (f2fs_may_inline_dentry(inode))
> set_inode_flag(inode, FI_INLINE_DENTRY);
> --
> 2.18.0.rc1

2020-03-26 09:35:56

by Chao Yu

[permalink] [raw]
Subject: Re: [PATCH RFC] f2fs: don't inline compressed inode

On 2020/3/25 23:58, Jaegeuk Kim wrote:
> On 03/25, Chao Yu wrote:
>> f2fs_may_inline_data() only check compressed flag on current inode
>> rather than on parent inode, however at this time compressed flag
>> has not been inherited yet.
>
> When write() or other allocation happens, it'll be reset.

Yeah, all tests are fine w/o this RFC patch, anyway, will let you know if
I find something incompatible.

Thanks,

>
>>
>> Signed-off-by: Chao Yu <[email protected]>
>> ---
>>
>> Jaegeuk,
>>
>> I'm not sure about this, whether inline_data flag can be compatible with
>> compress flag, thoughts?
>>
>> fs/f2fs/namei.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
>> index f54119da2217..3807d1b4c4bc 100644
>> --- a/fs/f2fs/namei.c
>> +++ b/fs/f2fs/namei.c
>> @@ -86,7 +86,8 @@ static struct inode *f2fs_new_inode(struct inode *dir, umode_t mode)
>> if (test_opt(sbi, INLINE_XATTR))
>> set_inode_flag(inode, FI_INLINE_XATTR);
>>
>> - if (test_opt(sbi, INLINE_DATA) && f2fs_may_inline_data(inode))
>> + if (test_opt(sbi, INLINE_DATA) && f2fs_may_inline_data(inode) &&
>> + !f2fs_compressed_file(dir))
>> set_inode_flag(inode, FI_INLINE_DATA);
>> if (f2fs_may_inline_dentry(inode))
>> set_inode_flag(inode, FI_INLINE_DENTRY);
>> --
>> 2.18.0.rc1
> .
>