2019-06-13 16:37:31

by Wang Shilong

[permalink] [raw]
Subject: 回复: [PATCH 2/2] f2fs: only set project inhe rit bit for directory

Hi Chao,

I just sent a V2, but I think we'd better do that when reading inode, for two reasons:

1) not only F2FS_IOC_GETFLAGS need filter flags but also F2FS_IOC_FSGETXATTR need that, so the amended parts is not enough IMO.

2) doing that by reading inode give a benefit that we could correct on disk flags for regular file next dirtying inode happen.

________________________________________
??????: Chao Yu <[email protected]>
????ʱ??: 2019??6??13?? 14:36
?ռ???: Wang Shilong; [email protected]; [email protected]
????: Wang Shilong; Andreas Dilger
????: Re: [PATCH 2/2] f2fs: only set project inherit bit for directory

On 2019/6/6 12:32, Wang Shilong wrote:
> From: Wang Shilong <[email protected]>
>
> It doesn't make any sense to have project inherit bits
> for regular files, even though this won't cause any
> problem, but it is better fix this.
>
> Cc: Andreas Dilger <[email protected]>
> Signed-off-by: Wang Shilong <[email protected]>
> ---
> fs/f2fs/f2fs.h | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index 06b89a9862ab..f02ebecb68ea 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -2370,7 +2370,8 @@ static inline void f2fs_change_bit(unsigned int nr, char *addr)
> F2FS_PROJINHERIT_FL)
>
> /* Flags that are appropriate for regular files (all but dir-specific ones). */
> -#define F2FS_REG_FLMASK (~(F2FS_DIRSYNC_FL | F2FS_TOPDIR_FL))
> +#define F2FS_REG_FLMASK (~(F2FS_DIRSYNC_FL | F2FS_TOPDIR_FL |\
> + F2FS_PROJINHERIT_FL))

Hi Shilong,

Could you please add below diff as ext4 did?

diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index efdafa886510..295ca5ed42d9 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1759,6 +1759,9 @@ static int f2fs_ioc_getflags(struct file *filp, unsigned
long arg)

fsflags &= F2FS_GETTABLE_FS_FL;

+ if (S_ISREG(inode->i_mode))
+ fsflags &= ~FS_PROJINHERIT_FL;
+
return put_user(fsflags, (int __user *)arg);
}

Thanks,

>
> /* Flags that are appropriate for non-directories/regular files. */
> #define F2FS_OTHER_FLMASK (F2FS_NODUMP_FL | F2FS_NOATIME_FL)
>