]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
qnx6: Convert qnx6_iget() to use a folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 10 Jul 2024 12:30:23 +0000 (08:30 -0400)
committerChristian Brauner <brauner@kernel.org>
Wed, 7 Aug 2024 09:31:55 +0000 (11:31 +0200)
Removes a use of kmap() and a couple of conversions between folios and
pages.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/qnx6/inode.c

index 6adee850278edb1514e2cbd59dcad036e5423433..85925ec0051a97cf5867bbef685099cc67bb9392 100644 (file)
@@ -518,7 +518,7 @@ struct inode *qnx6_iget(struct super_block *sb, unsigned ino)
        struct inode *inode;
        struct qnx6_inode_info  *ei;
        struct address_space *mapping;
-       struct page *page;
+       struct folio *folio;
        u32 n, offs;
 
        inode = iget_locked(sb, ino);
@@ -538,17 +538,16 @@ struct inode *qnx6_iget(struct super_block *sb, unsigned ino)
                return ERR_PTR(-EIO);
        }
        n = (ino - 1) >> (PAGE_SHIFT - QNX6_INODE_SIZE_BITS);
-       offs = (ino - 1) & (~PAGE_MASK >> QNX6_INODE_SIZE_BITS);
        mapping = sbi->inodes->i_mapping;
-       page = read_mapping_page(mapping, n, NULL);
-       if (IS_ERR(page)) {
+       folio = read_mapping_folio(mapping, n, NULL);
+       if (IS_ERR(folio)) {
                pr_err("major problem: unable to read inode from dev %s\n",
                       sb->s_id);
                iget_failed(inode);
-               return ERR_CAST(page);
+               return ERR_CAST(folio);
        }
-       kmap(page);
-       raw_inode = ((struct qnx6_inode_entry *)page_address(page)) + offs;
+       offs = offset_in_folio(folio, (ino - 1) << QNX6_INODE_SIZE_BITS);
+       raw_inode = kmap_local_folio(folio, offs);
 
        inode->i_mode    = fs16_to_cpu(sbi, raw_inode->di_mode);
        i_uid_write(inode, (uid_t)fs32_to_cpu(sbi, raw_inode->di_uid));
@@ -578,7 +577,7 @@ struct inode *qnx6_iget(struct super_block *sb, unsigned ino)
                inode->i_mapping->a_ops = &qnx6_aops;
        } else
                init_special_inode(inode, inode->i_mode, 0);
-       qnx6_put_page(page);
+       folio_release_kmap(folio, raw_inode);
        unlock_new_inode(inode);
        return inode;
 }