erofs: unify inline/shared xattr iterators for listxattr/getxattr
authorJingbo Xu <jefflexu@linux.alibaba.com>
Tue, 13 Jun 2023 07:41:13 +0000 (15:41 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Sun, 18 Jun 2023 04:10:54 +0000 (12:10 +0800)
commit4b077b501266c6c6784656cd8721db37c090c5df
tree5b345ff7b7e6beb9f95027d970f033b851b99316
parent5a8ffb1975c5b6511a996383fce7ad0f97132a5c
erofs: unify inline/shared xattr iterators for listxattr/getxattr

Make inline_{list,get}xattr() as well as inline_xattr_iter_begin()
unified as erofs_xattr_iter_inline(), and shared_{list,get}xattr()
unified as erofs_xattr_iter_shared().

After these changes, both erofs_xattr_iter_{inline,shared}() return 0 on
success, and negative error on failure.

One thing worth noting is that, the logic of returning it->buffer_ofs
when there's no shared xattrs in shared_listxattr() is moved to
erofs_listxattr() to make the unification possible.  The only difference
is that, semantically the old behavior will return ENOATTR rather than
it->buffer_ofs if ENOATTR encountered when listxattr is parsing upon a
specific shared xattr, while now the new behavior will return
it->buffer_ofs in this case.  This is not an issue, as listxattr upon a
specific xattr won't return ENOATTR.

Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230613074114.120115-5-jefflexu@linux.alibaba.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
fs/erofs/xattr.c