OSDN Git Service

f2fs: fix to adapt small inline xattr space in __find_inline_xattr()
authorChao Yu <yuchao0@huawei.com>
Tue, 5 Mar 2019 11:32:26 +0000 (19:32 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 14 Mar 2019 21:17:31 +0000 (14:17 -0700)
commit413e1f1994f2476e911d6ccebd561ffebe7d1c20
tree20b7150f891eb6f3f32c0e924829562ea76f46eb
parent1f4e6f41cc90709c8faaa4b344589093d3d74d7e
f2fs: fix to adapt small inline xattr space in __find_inline_xattr()

With below testcase, we will fail to find existed xattr entry:

1. mkfs.f2fs -O extra_attr -O flexible_inline_xattr /dev/zram0
2. mount -t f2fs -o inline_xattr_size=1 /dev/zram0 /mnt/f2fs/
3. touch /mnt/f2fs/file
4. setfattr -n "user.name" -v 0 /mnt/f2fs/file
5. getfattr -n "user.name" /mnt/f2fs/file

/mnt/f2fs/file: user.name: No such attribute

The reason is for inode which has very small inline xattr size,
__find_inline_xattr() will fail to traverse any entry due to first
entry may not be loaded from xattr node yet, later, we may skip to
check entire xattr datas in __find_xattr(), result in such wrong
condition.

This patch adds condition to check such case to avoid this issue.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/xattr.c