On 05/25, Chao Yu wrote:
> We should set noatime bit for quota files, since no one cares about
> atime of quota file, and we should set immutalbe bit as well, due to
> nobody should write to the file through exported interfaces.
> 
> Meanwhile this patch use inode_lock to avoid race condition during
> inode->i_flags, f2fs_inode->i_flags update.
> 
> Signed-off-by: Chao Yu <c...@kernel.org>
> ---
> v2:
> - fix to detect i_flags status correctly.
>  fs/f2fs/super.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index 51812f459581..1cf84c993d7c 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -2763,7 +2763,17 @@ static int f2fs_quota_enable(struct super_block *sb, 
> int type, int format_id,
>       }
>  
>       /* Don't account quota for quota files to avoid recursion */
> +     inode_lock(qf_inode);
>       qf_inode->i_flags |= S_NOQUOTA;
> +
> +     if (!(F2FS_I(qf_inode)->i_flags & F2FS_NOATIME_FL) ||
> +             !(F2FS_I(qf_inode)->i_flags & F2FS_IMMUTABLE_FL)) {

What about this?

if ((F2FS_I(qf_inode)->i_flags & qf_flag) != qf_flag)

> +             F2FS_I(qf_inode)->i_flags |=
> +                             F2FS_NOATIME_FL | F2FS_IMMUTABLE_FL;
> +             f2fs_set_inode_flags(qf_inode);
> +     }
> +     inode_unlock(qf_inode);
> +
>       err = dquot_load_quota_inode(qf_inode, type, format_id, flags);
>       iput(qf_inode);
>       return err;
> -- 
> 2.40.1


_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to