erofs_buf: store address_space instead of inode
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 25 Apr 2024 04:15:46 +0000 (00:15 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 25 Apr 2024 04:57:14 +0000 (00:57 -0400)
... seeing that ->i_mapping is the only thing we want from the inode.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/erofs/data.c
fs/erofs/dir.c
fs/erofs/internal.h
fs/erofs/namei.c
fs/erofs/xattr.c
fs/erofs/zdata.c

index d3c446dda2ffc02448c61f8431dc2e644764fcc9..e1a170e45c700101da6b7eafa3d9aea0335b462c 100644 (file)
@@ -32,7 +32,6 @@ void erofs_put_metabuf(struct erofs_buf *buf)
 void *erofs_bread(struct erofs_buf *buf, erofs_off_t offset,
                  enum erofs_kmap_type type)
 {
-       struct inode *inode = buf->inode;
        pgoff_t index = offset >> PAGE_SHIFT;
        struct page *page = buf->page;
        struct folio *folio;
@@ -42,7 +41,7 @@ void *erofs_bread(struct erofs_buf *buf, erofs_off_t offset,
                erofs_put_metabuf(buf);
 
                nofs_flag = memalloc_nofs_save();
-               folio = read_cache_folio(inode->i_mapping, index, NULL, NULL);
+               folio = read_cache_folio(buf->mapping, index, NULL, NULL);
                memalloc_nofs_restore(nofs_flag);
                if (IS_ERR(folio))
                        return folio;
@@ -67,9 +66,9 @@ void *erofs_bread(struct erofs_buf *buf, erofs_off_t offset,
 void erofs_init_metabuf(struct erofs_buf *buf, struct super_block *sb)
 {
        if (erofs_is_fscache_mode(sb))
-               buf->inode = EROFS_SB(sb)->s_fscache->inode;
+               buf->mapping = EROFS_SB(sb)->s_fscache->inode->i_mapping;
        else
-               buf->inode = sb->s_bdev->bd_inode;
+               buf->mapping = sb->s_bdev->bd_inode->i_mapping;
 }
 
 void *erofs_read_metabuf(struct erofs_buf *buf, struct super_block *sb,
index 9d38f39bb4f77bb3b4cfda104e3625ebd69aea96..2193a6710c8f666705a0ac72849fb62768dbca4a 100644 (file)
@@ -58,7 +58,7 @@ static int erofs_readdir(struct file *f, struct dir_context *ctx)
        int err = 0;
        bool initial = true;
 
-       buf.inode = dir;
+       buf.mapping = dir->i_mapping;
        while (ctx->pos < dirsize) {
                struct erofs_dirent *de;
                unsigned int nameoff, maxsize;
index 9e30c67c135c903b28d8b0593d4968f333f9cc0e..12a1798188977084965986b642fa369480941392 100644 (file)
@@ -223,7 +223,7 @@ enum erofs_kmap_type {
 };
 
 struct erofs_buf {
-       struct inode *inode;
+       struct address_space *mapping;
        struct page *page;
        void *base;
        enum erofs_kmap_type kmap_type;
index 11afa48996a36c395ecd0f957004457066d05573..c94d0c1608a81e2383185f854f5d0ca5303f113e 100644 (file)
@@ -99,7 +99,7 @@ static void *erofs_find_target_block(struct erofs_buf *target,
                struct erofs_buf buf = __EROFS_BUF_INITIALIZER;
                struct erofs_dirent *de;
 
-               buf.inode = dir;
+               buf.mapping = dir->i_mapping;
                de = erofs_bread(&buf, erofs_pos(dir->i_sb, mid), EROFS_KMAP);
                if (!IS_ERR(de)) {
                        const int nameoff = nameoff_from_disk(de->nameoff, bsz);
@@ -171,7 +171,7 @@ int erofs_namei(struct inode *dir, const struct qstr *name, erofs_nid_t *nid,
 
        qn.name = name->name;
        qn.end = name->name + name->len;
-       buf.inode = dir;
+       buf.mapping = dir->i_mapping;
 
        ndirents = 0;
        de = erofs_find_target_block(&buf, dir, &qn, &ndirents);
index ec233917830a9d9cae55f975562c63fd332c99bf..a90d7d649739051db77fb543cd69090512535346 100644 (file)
@@ -483,7 +483,7 @@ int erofs_xattr_prefixes_init(struct super_block *sb)
                return -ENOMEM;
 
        if (sbi->packed_inode)
-               buf.inode = sbi->packed_inode;
+               buf.mapping = sbi->packed_inode->i_mapping;
        else
                erofs_init_metabuf(&buf, sb);
 
index 9ffdae7fcd5becddd23d0895cd35ab0dca7f311d..283c9c3a611dfd989a1a2f12ea4593bc9458e743 100644 (file)
@@ -936,7 +936,7 @@ static int z_erofs_read_fragment(struct super_block *sb, struct page *page,
        if (!packed_inode)
                return -EFSCORRUPTED;
 
-       buf.inode = packed_inode;
+       buf.mapping = packed_inode->i_mapping;
        for (; cur < end; cur += cnt, pos += cnt) {
                cnt = min_t(unsigned int, end - cur,
                            sb->s_blocksize - erofs_blkoff(sb, pos));