]> Git Repo - J-linux.git/commitdiff
Merge tag 'erofs-for-6.10-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <[email protected]>
Fri, 24 May 2024 16:31:50 +0000 (09:31 -0700)
committerLinus Torvalds <[email protected]>
Fri, 24 May 2024 16:31:50 +0000 (09:31 -0700)
Pull more erofs updates from Gao Xiang:
 "The main ones are metadata API conversion to byte offsets by Al Viro.

  Another patch gets rid of unnecessary memory allocation out of DEFLATE
  decompressor. The remaining one is a trivial cleanup.

   - Convert metadata APIs to byte offsets

   - Avoid allocating DEFLATE streams unnecessarily

   - Some erofs_show_options() cleanup"

* tag 'erofs-for-6.10-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs:
  erofs: avoid allocating DEFLATE streams before mounting
  z_erofs_pcluster_begin(): don't bother with rounding position down
  erofs: don't round offset down for erofs_read_metabuf()
  erofs: don't align offset for erofs_read_metabuf() (simple cases)
  erofs: mechanically convert erofs_read_metabuf() to offsets
  erofs: clean up erofs_show_options()

1  2 
fs/erofs/data.c

diff --combined fs/erofs/data.c
index 5fc03c1e2757a9245869912e8a8f6f3caeddf8d0,604d0bc82a0e677022c5f9404c25bd2469de05ff..8be60797ea2fffdd91a27a28026a81a90c97e2e1
@@@ -68,14 -68,14 +68,14 @@@ void erofs_init_metabuf(struct erofs_bu
        if (erofs_is_fscache_mode(sb))
                buf->mapping = EROFS_SB(sb)->s_fscache->inode->i_mapping;
        else
 -              buf->mapping = sb->s_bdev->bd_inode->i_mapping;
 +              buf->mapping = sb->s_bdev->bd_mapping;
  }
  
  void *erofs_read_metabuf(struct erofs_buf *buf, struct super_block *sb,
-                        erofs_blk_t blkaddr, enum erofs_kmap_type type)
+                        erofs_off_t offset, enum erofs_kmap_type type)
  {
        erofs_init_metabuf(buf, sb);
-       return erofs_bread(buf, erofs_pos(sb, blkaddr), type);
+       return erofs_bread(buf, offset, type);
  }
  
  static int erofs_map_blocks_flatmode(struct inode *inode,
@@@ -152,7 -152,7 +152,7 @@@ int erofs_map_blocks(struct inode *inod
        pos = ALIGN(erofs_iloc(inode) + vi->inode_isize +
                    vi->xattr_isize, unit) + unit * chunknr;
  
-       kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(sb, pos), EROFS_KMAP);
+       kaddr = erofs_read_metabuf(&buf, sb, pos, EROFS_KMAP);
        if (IS_ERR(kaddr)) {
                err = PTR_ERR(kaddr);
                goto out;
  
        /* handle block map */
        if (!(vi->chunkformat & EROFS_CHUNK_FORMAT_INDEXES)) {
-               __le32 *blkaddr = kaddr + erofs_blkoff(sb, pos);
+               __le32 *blkaddr = kaddr;
  
                if (le32_to_cpu(*blkaddr) == EROFS_NULL_ADDR) {
                        map->m_flags = 0;
                goto out_unlock;
        }
        /* parse chunk indexes */
-       idx = kaddr + erofs_blkoff(sb, pos);
+       idx = kaddr;
        switch (le32_to_cpu(idx->blkaddr)) {
        case EROFS_NULL_ADDR:
                map->m_flags = 0;
@@@ -294,11 -294,10 +294,10 @@@ static int erofs_iomap_begin(struct ino
                struct erofs_buf buf = __EROFS_BUF_INITIALIZER;
  
                iomap->type = IOMAP_INLINE;
-               ptr = erofs_read_metabuf(&buf, sb,
-                               erofs_blknr(sb, mdev.m_pa), EROFS_KMAP);
+               ptr = erofs_read_metabuf(&buf, sb, mdev.m_pa, EROFS_KMAP);
                if (IS_ERR(ptr))
                        return PTR_ERR(ptr);
-               iomap->inline_data = ptr + erofs_blkoff(sb, mdev.m_pa);
+               iomap->inline_data = ptr;
                iomap->private = buf.base;
        } else {
                iomap->type = IOMAP_MAPPED;
This page took 0.058845 seconds and 4 git commands to generate.