Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

erofs: remove need_kmap in erofs_read_metabuf()

- need_kmap is always true except for a ztailpacking case; thus, just
open-code that one;

- The upcoming metadata compression will add a new boolean, so simplify
this first.

Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Link: https://lore.kernel.org/r/20250714090907.4095645-1-hsiangkao@linux.alibaba.com

Gao Xiang 5e744cb6 1a5223c1

+22 -21
+4 -4
fs/erofs/data.c
··· 65 65 } 66 66 67 67 void *erofs_read_metabuf(struct erofs_buf *buf, struct super_block *sb, 68 - erofs_off_t offset, bool need_kmap) 68 + erofs_off_t offset) 69 69 { 70 70 erofs_init_metabuf(buf, sb); 71 - return erofs_bread(buf, offset, need_kmap); 71 + return erofs_bread(buf, offset, true); 72 72 } 73 73 74 74 int erofs_map_blocks(struct inode *inode, struct erofs_map_blocks *map) ··· 118 118 pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + 119 119 vi->xattr_isize, unit) + unit * chunknr; 120 120 121 - idx = erofs_read_metabuf(&buf, sb, pos, true); 121 + idx = erofs_read_metabuf(&buf, sb, pos); 122 122 if (IS_ERR(idx)) { 123 123 err = PTR_ERR(idx); 124 124 goto out; ··· 299 299 struct erofs_buf buf = __EROFS_BUF_INITIALIZER; 300 300 301 301 iomap->type = IOMAP_INLINE; 302 - ptr = erofs_read_metabuf(&buf, sb, mdev.m_pa, true); 302 + ptr = erofs_read_metabuf(&buf, sb, mdev.m_pa); 303 303 if (IS_ERR(ptr)) 304 304 return PTR_ERR(ptr); 305 305 iomap->inline_data = ptr;
+1 -1
fs/erofs/fileio.c
··· 115 115 void *src; 116 116 117 117 src = erofs_read_metabuf(&buf, inode->i_sb, 118 - map->m_pa + ofs, true); 118 + map->m_pa + ofs); 119 119 if (IS_ERR(src)) { 120 120 err = PTR_ERR(src); 121 121 break;
+1 -1
fs/erofs/fscache.c
··· 274 274 size_t size = map.m_llen; 275 275 void *src; 276 276 277 - src = erofs_read_metabuf(&buf, sb, map.m_pa, true); 277 + src = erofs_read_metabuf(&buf, sb, map.m_pa); 278 278 if (IS_ERR(src)) 279 279 return PTR_ERR(src); 280 280
+4 -4
fs/erofs/inode.c
··· 39 39 void *ptr; 40 40 int err = 0; 41 41 42 - ptr = erofs_read_metabuf(&buf, sb, erofs_pos(sb, blkaddr), true); 42 + ptr = erofs_read_metabuf(&buf, sb, erofs_pos(sb, blkaddr)); 43 43 if (IS_ERR(ptr)) { 44 44 err = PTR_ERR(ptr); 45 - erofs_err(sb, "failed to get inode (nid: %llu) page, err %d", 45 + erofs_err(sb, "failed to read inode meta block (nid: %llu): %d", 46 46 vi->nid, err); 47 47 goto err_out; 48 48 } ··· 78 78 79 79 memcpy(&copied, dic, gotten); 80 80 ptr = erofs_read_metabuf(&buf, sb, 81 - erofs_pos(sb, blkaddr + 1), true); 81 + erofs_pos(sb, blkaddr + 1)); 82 82 if (IS_ERR(ptr)) { 83 83 err = PTR_ERR(ptr); 84 - erofs_err(sb, "failed to get inode payload block (nid: %llu), err %d", 84 + erofs_err(sb, "failed to read inode payload block (nid: %llu): %d", 85 85 vi->nid, err); 86 86 goto err_out; 87 87 }
+1 -1
fs/erofs/internal.h
··· 385 385 void *erofs_bread(struct erofs_buf *buf, erofs_off_t offset, bool need_kmap); 386 386 void erofs_init_metabuf(struct erofs_buf *buf, struct super_block *sb); 387 387 void *erofs_read_metabuf(struct erofs_buf *buf, struct super_block *sb, 388 - erofs_off_t offset, bool need_kmap); 388 + erofs_off_t offset); 389 389 int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *dev); 390 390 int erofs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, 391 391 u64 start, u64 len);
+2 -2
fs/erofs/super.c
··· 141 141 struct erofs_deviceslot *dis; 142 142 struct file *file; 143 143 144 - dis = erofs_read_metabuf(buf, sb, *pos, true); 144 + dis = erofs_read_metabuf(buf, sb, *pos); 145 145 if (IS_ERR(dis)) 146 146 return PTR_ERR(dis); 147 147 ··· 258 258 void *data; 259 259 int ret; 260 260 261 - data = erofs_read_metabuf(&buf, sb, 0, true); 261 + data = erofs_read_metabuf(&buf, sb, 0); 262 262 if (IS_ERR(data)) { 263 263 erofs_err(sb, "cannot read erofs superblock"); 264 264 return PTR_ERR(data);
+3 -2
fs/erofs/zdata.c
··· 855 855 /* bind cache first when cached decompression is preferred */ 856 856 z_erofs_bind_cache(fe); 857 857 } else { 858 - ptr = erofs_read_metabuf(&map->buf, sb, map->m_pa, false); 858 + erofs_init_metabuf(&map->buf, sb); 859 + ptr = erofs_bread(&map->buf, map->m_pa, false); 859 860 if (IS_ERR(ptr)) { 860 861 ret = PTR_ERR(ptr); 861 - erofs_err(sb, "failed to get inline data %d", ret); 862 + erofs_err(sb, "failed to get inline folio %d", ret); 862 863 return ret; 863 864 } 864 865 folio_get(page_folio(map->buf.page));
+6 -6
fs/erofs/zmap.c
··· 31 31 struct z_erofs_lcluster_index *di; 32 32 unsigned int advise; 33 33 34 - di = erofs_read_metabuf(&m->map->buf, inode->i_sb, pos, true); 34 + di = erofs_read_metabuf(&m->map->buf, inode->i_sb, pos); 35 35 if (IS_ERR(di)) 36 36 return PTR_ERR(di); 37 37 m->lcn = lcn; ··· 146 146 else 147 147 return -EOPNOTSUPP; 148 148 149 - in = erofs_read_metabuf(&m->map->buf, m->inode->i_sb, pos, true); 149 + in = erofs_read_metabuf(&m->map->buf, m->inode->i_sb, pos); 150 150 if (IS_ERR(in)) 151 151 return PTR_ERR(in); 152 152 ··· 530 530 map->m_flags = 0; 531 531 if (recsz <= offsetof(struct z_erofs_extent, pstart_hi)) { 532 532 if (recsz <= offsetof(struct z_erofs_extent, pstart_lo)) { 533 - ext = erofs_read_metabuf(&map->buf, sb, pos, true); 533 + ext = erofs_read_metabuf(&map->buf, sb, pos); 534 534 if (IS_ERR(ext)) 535 535 return PTR_ERR(ext); 536 536 pa = le64_to_cpu(*(__le64 *)ext); ··· 543 543 } 544 544 545 545 for (; lstart <= map->m_la; lstart += 1 << vi->z_lclusterbits) { 546 - ext = erofs_read_metabuf(&map->buf, sb, pos, true); 546 + ext = erofs_read_metabuf(&map->buf, sb, pos); 547 547 if (IS_ERR(ext)) 548 548 return PTR_ERR(ext); 549 549 map->m_plen = le32_to_cpu(ext->plen); ··· 563 563 for (l = 0, r = vi->z_extents; l < r; ) { 564 564 mid = l + (r - l) / 2; 565 565 ext = erofs_read_metabuf(&map->buf, sb, 566 - pos + mid * recsz, true); 566 + pos + mid * recsz); 567 567 if (IS_ERR(ext)) 568 568 return PTR_ERR(ext); 569 569 ··· 646 646 goto out_unlock; 647 647 648 648 pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); 649 - h = erofs_read_metabuf(&buf, sb, pos, true); 649 + h = erofs_read_metabuf(&buf, sb, pos); 650 650 if (IS_ERR(h)) { 651 651 err = PTR_ERR(h); 652 652 goto out_unlock;