On Thu, 30 Mar 2023 16:29:03 +0800 Jingbo Xu <[email protected]> wrote:
> Move xattrblock_addr() and xattrblock_offset() helpers into xattr.c, > as they are not used outside of xattr.c. > > inlinexattr_header_size() has only one caller, and thus make it inlined > into the caller directly. > > Signed-off-by: Jingbo Xu <[email protected]> Reviewed-by: Yue Hu <[email protected]> > --- > fs/erofs/xattr.c | 48 +++++++++++++++++++++++++++++------------------- > fs/erofs/xattr.h | 23 ----------------------- > 2 files changed, 29 insertions(+), 42 deletions(-) > > diff --git a/fs/erofs/xattr.c b/fs/erofs/xattr.c > index 459caa3cd65d..9ccd57581bc7 100644 > --- a/fs/erofs/xattr.c > +++ b/fs/erofs/xattr.c > @@ -7,6 +7,19 @@ > #include <linux/security.h> > #include "xattr.h" > > +static inline erofs_blk_t erofs_xattr_blkaddr(struct super_block *sb, > + unsigned int xattr_id) > +{ > + return EROFS_SB(sb)->xattr_blkaddr + > + erofs_blknr(sb, xattr_id * sizeof(__u32)); > +} > + > +static inline unsigned int erofs_xattr_blkoff(struct super_block *sb, > + unsigned int xattr_id) > +{ > + return erofs_blkoff(sb, xattr_id * sizeof(__u32)); > +} > + > struct xattr_iter { > struct super_block *sb; > struct erofs_buf buf; > @@ -157,7 +170,8 @@ static int inline_xattr_iter_begin(struct xattr_iter *it, > struct erofs_inode *const vi = EROFS_I(inode); > unsigned int xattr_header_sz, inline_xattr_ofs; > > - xattr_header_sz = inlinexattr_header_size(inode); > + xattr_header_sz = sizeof(struct erofs_xattr_ibody_header) + > + sizeof(u32) * vi->xattr_shared_count; > if (xattr_header_sz >= vi->xattr_isize) { > DBG_BUGON(xattr_header_sz > vi->xattr_isize); > return -ENOATTR; > @@ -351,20 +365,18 @@ static int inline_getxattr(struct inode *inode, struct > getxattr_iter *it) > static int shared_getxattr(struct inode *inode, struct getxattr_iter *it) > { > struct erofs_inode *const vi = EROFS_I(inode); > - struct super_block *const sb = inode->i_sb; > - unsigned int i; > + struct super_block *const sb = it->it.sb; > + unsigned int i, xsid; > int ret = -ENOATTR; > > for (i = 0; i < vi->xattr_shared_count; ++i) { > - erofs_blk_t blkaddr = > - xattrblock_addr(sb, vi->xattr_shared_xattrs[i]); > - > - it->it.ofs = xattrblock_offset(sb, vi->xattr_shared_xattrs[i]); > - it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr, > - EROFS_KMAP); > + xsid = vi->xattr_shared_xattrs[i]; > + it->it.blkaddr = erofs_xattr_blkaddr(sb, xsid); > + it->it.ofs = erofs_xattr_blkoff(sb, xsid); > + it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, > + it->it.blkaddr, EROFS_KMAP); > if (IS_ERR(it->it.kaddr)) > return PTR_ERR(it->it.kaddr); > - it->it.blkaddr = blkaddr; > > ret = xattr_foreach(&it->it, &find_xattr_handlers, NULL); > if (ret != -ENOATTR) > @@ -562,20 +574,18 @@ static int shared_listxattr(struct listxattr_iter *it) > { > struct inode *const inode = d_inode(it->dentry); > struct erofs_inode *const vi = EROFS_I(inode); > - struct super_block *const sb = inode->i_sb; > - unsigned int i; > + struct super_block *const sb = it->it.sb; > + unsigned int i, xsid; > int ret = 0; > > for (i = 0; i < vi->xattr_shared_count; ++i) { > - erofs_blk_t blkaddr = > - xattrblock_addr(sb, vi->xattr_shared_xattrs[i]); > - > - it->it.ofs = xattrblock_offset(sb, vi->xattr_shared_xattrs[i]); > - it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr, > - EROFS_KMAP); > + xsid = vi->xattr_shared_xattrs[i]; > + it->it.blkaddr = erofs_xattr_blkaddr(sb, xsid); > + it->it.ofs = erofs_xattr_blkoff(sb, xsid); > + it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, > + it->it.blkaddr, EROFS_KMAP); > if (IS_ERR(it->it.kaddr)) > return PTR_ERR(it->it.kaddr); > - it->it.blkaddr = blkaddr; > > ret = xattr_foreach(&it->it, &list_xattr_handlers, NULL); > if (ret) > diff --git a/fs/erofs/xattr.h b/fs/erofs/xattr.h > index f7a21aaa9755..a65158cba14f 100644 > --- a/fs/erofs/xattr.h > +++ b/fs/erofs/xattr.h > @@ -13,29 +13,6 @@ > /* Attribute not found */ > #define ENOATTR ENODATA > > -static inline unsigned int inlinexattr_header_size(struct inode *inode) > -{ > - return sizeof(struct erofs_xattr_ibody_header) + > - sizeof(u32) * EROFS_I(inode)->xattr_shared_count; > -} > - > -static inline erofs_blk_t xattrblock_addr(struct super_block *sb, > - unsigned int xattr_id) > -{ > -#ifdef CONFIG_EROFS_FS_XATTR > - return EROFS_SB(sb)->xattr_blkaddr + > - xattr_id * sizeof(__u32) / sb->s_blocksize; > -#else > - return 0; > -#endif > -} > - > -static inline unsigned int xattrblock_offset(struct super_block *sb, > - unsigned int xattr_id) > -{ > - return (xattr_id * sizeof(__u32)) % sb->s_blocksize; > -} > - > #ifdef CONFIG_EROFS_FS_XATTR > extern const struct xattr_handler erofs_xattr_user_handler; > extern const struct xattr_handler erofs_xattr_trusted_handler;
