• C
    f2fs: fix to use inline space only if inline_xattr is enable · be4284c7
    Chao Yu 提交于
    [ 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: 6afc662e ("f2fs: support flexible inline xattr size")
    Signed-off-by: NChao Yu <yuchao0@huawei.com>
    Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: NSasha Levin <sashal@kernel.org>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    be4284c7
f2fs.h 109.4 KB