Skip to content

Commit 9c39ec0

Browse files
lostjefflehsiangkao
authored andcommitted
erofs: convert erofs_read_metabuf() to erofs_bread() for xattr
buf->inode is constant once initialized during erofs_buf's lifetime. Thus call erofs_init_metabuf() and erofs_bread() separately to avoid the repetition of assigning buf->inode when iterating xattrs. Signed-off-by: Jingbo Xu <[email protected]> Reviewed-by: Gao Xiang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Gao Xiang <[email protected]>
1 parent 43d86ec commit 9c39ec0

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

fs/erofs/xattr.c

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,12 @@ static int erofs_init_inode_xattrs(struct inode *inode)
8181
}
8282

8383
it.buf = __EROFS_BUF_INITIALIZER;
84+
erofs_init_metabuf(&it.buf, sb);
8485
it.blkaddr = erofs_blknr(sb, erofs_iloc(inode) + vi->inode_isize);
8586
it.ofs = erofs_blkoff(sb, erofs_iloc(inode) + vi->inode_isize);
8687

8788
/* read in shared xattr array (non-atomic, see kmalloc below) */
88-
it.kaddr = erofs_read_metabuf(&it.buf, sb, it.blkaddr, EROFS_KMAP);
89+
it.kaddr = erofs_bread(&it.buf, it.blkaddr, EROFS_KMAP);
8990
if (IS_ERR(it.kaddr)) {
9091
ret = PTR_ERR(it.kaddr);
9192
goto out_unlock;
@@ -109,8 +110,7 @@ static int erofs_init_inode_xattrs(struct inode *inode)
109110
/* cannot be unaligned */
110111
DBG_BUGON(it.ofs != sb->s_blocksize);
111112

112-
it.kaddr = erofs_read_metabuf(&it.buf, sb, ++it.blkaddr,
113-
EROFS_KMAP);
113+
it.kaddr = erofs_bread(&it.buf, ++it.blkaddr, EROFS_KMAP);
114114
if (IS_ERR(it.kaddr)) {
115115
kfree(vi->xattr_shared_xattrs);
116116
vi->xattr_shared_xattrs = NULL;
@@ -156,8 +156,7 @@ static inline int xattr_iter_fixup(struct xattr_iter *it)
156156
return 0;
157157

158158
it->blkaddr += erofs_blknr(it->sb, it->ofs);
159-
it->kaddr = erofs_read_metabuf(&it->buf, it->sb, it->blkaddr,
160-
EROFS_KMAP);
159+
it->kaddr = erofs_bread(&it->buf, it->blkaddr, EROFS_KMAP);
161160
if (IS_ERR(it->kaddr))
162161
return PTR_ERR(it->kaddr);
163162
it->ofs = erofs_blkoff(it->sb, it->ofs);
@@ -181,8 +180,7 @@ static int inline_xattr_iter_begin(struct xattr_iter *it,
181180

182181
it->blkaddr = erofs_blknr(it->sb, erofs_iloc(inode) + inline_xattr_ofs);
183182
it->ofs = erofs_blkoff(it->sb, erofs_iloc(inode) + inline_xattr_ofs);
184-
it->kaddr = erofs_read_metabuf(&it->buf, inode->i_sb, it->blkaddr,
185-
EROFS_KMAP);
183+
it->kaddr = erofs_bread(&it->buf, it->blkaddr, EROFS_KMAP);
186184
if (IS_ERR(it->kaddr))
187185
return PTR_ERR(it->kaddr);
188186
return vi->xattr_isize - xattr_header_sz;
@@ -403,8 +401,7 @@ static int shared_getxattr(struct inode *inode, struct getxattr_iter *it)
403401
xsid = vi->xattr_shared_xattrs[i];
404402
it->it.blkaddr = erofs_xattr_blkaddr(sb, xsid);
405403
it->it.ofs = erofs_xattr_blkoff(sb, xsid);
406-
it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb,
407-
it->it.blkaddr, EROFS_KMAP);
404+
it->it.kaddr = erofs_bread(&it->it.buf, it->it.blkaddr, EROFS_KMAP);
408405
if (IS_ERR(it->it.kaddr))
409406
return PTR_ERR(it->it.kaddr);
410407

@@ -444,13 +441,14 @@ int erofs_getxattr(struct inode *inode, int index,
444441
if (it.name.len > EROFS_NAME_LEN)
445442
return -ERANGE;
446443

444+
it.it.sb = inode->i_sb;
447445
it.it.buf = __EROFS_BUF_INITIALIZER;
446+
erofs_init_metabuf(&it.it.buf, it.it.sb);
448447
it.name.name = name;
449448

450449
it.buffer = buffer;
451450
it.buffer_size = buffer_size;
452451

453-
it.it.sb = inode->i_sb;
454452
ret = inline_getxattr(inode, &it);
455453
if (ret == -ENOATTR)
456454
ret = shared_getxattr(inode, &it);
@@ -608,8 +606,7 @@ static int shared_listxattr(struct listxattr_iter *it)
608606
xsid = vi->xattr_shared_xattrs[i];
609607
it->it.blkaddr = erofs_xattr_blkaddr(sb, xsid);
610608
it->it.ofs = erofs_xattr_blkoff(sb, xsid);
611-
it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb,
612-
it->it.blkaddr, EROFS_KMAP);
609+
it->it.kaddr = erofs_bread(&it->it.buf, it->it.blkaddr, EROFS_KMAP);
613610
if (IS_ERR(it->it.kaddr))
614611
return PTR_ERR(it->it.kaddr);
615612

@@ -632,14 +629,14 @@ ssize_t erofs_listxattr(struct dentry *dentry,
632629
if (ret)
633630
return ret;
634631

632+
it.it.sb = dentry->d_sb;
635633
it.it.buf = __EROFS_BUF_INITIALIZER;
634+
erofs_init_metabuf(&it.it.buf, it.it.sb);
636635
it.dentry = dentry;
637636
it.buffer = buffer;
638637
it.buffer_size = buffer_size;
639638
it.buffer_ofs = 0;
640639

641-
it.it.sb = dentry->d_sb;
642-
643640
ret = inline_listxattr(&it);
644641
if (ret >= 0 || ret == -ENOATTR)
645642
ret = shared_listxattr(&it);

0 commit comments

Comments
 (0)