• Chao Yu's avatar
    f2fs: fix to use inline space only if inline_xattr is enable · 7cc9fda7
    Chao Yu authored
    [ Upstream commit 622927f3 ]
    
    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: 6afc662e ("f2fs: support flexible inline xattr size")
    Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    7cc9fda7
f2fs.h 115 KB