lkml.org 
[lkml]   [2019]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 039/118] f2fs: fix to use inline space only if inline_xattr is enable
    Date
    [ Upstream commit 622927f3b8809206f6da54a6a7ed4df1a7770fce ]

    With below mkfs and mount option:

    MKFS_OPTIONS -- -O extra_attr -O project_quota -O inode_checksum -O flexible_inline_xattr -O inode_crtime -f
    MOUNT_OPTIONS -- -o noinline_xattr

    We may miss xattr data with below testcase:
    - mkdir dir
    - setfattr -n "user.name" -v 0 dir
    - for ((i = 0; i < 190; i++)) do touch dir/$i; done
    - umount
    - mount
    - getfattr -n "user.name" dir

    user.name: No such attribute

    The root cause is that we persist xattr data into reserved inline xattr
    space, even if inline_xattr is not enable in inline directory inode, after
    inline dentry conversion, reserved space no longer exists, so that xattr
    data missed.

    Let's use inline xattr space only if inline_xattr flag is set on inode
    to fix this iusse.

    Fixes: 6afc662e68b5 ("f2fs: support flexible inline xattr size")
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/f2fs/f2fs.h | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
    index 64f970cca1b4..44ea7ac69ef4 100644
    --- a/fs/f2fs/f2fs.h
    +++ b/fs/f2fs/f2fs.h
    @@ -2497,7 +2497,9 @@ static inline void *inline_xattr_addr(struct inode *inode, struct page *page)

    static inline int inline_xattr_size(struct inode *inode)
    {
    - return get_inline_xattr_addrs(inode) * sizeof(__le32);
    + if (f2fs_has_inline_xattr(inode))
    + return get_inline_xattr_addrs(inode) * sizeof(__le32);
    + return 0;
    }

    static inline int f2fs_has_inline_data(struct inode *inode)
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-06-13 18:17    [W:3.044 / U:0.692 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site