Merge tag 'thermal-6.2-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux-block.git] / fs / hfs / btree.c
index 19017d2961734fd7701aa1ac31c6a94d8a65c71b..2fa4b1f8cc7fb098a9406d600ded87922c2ba9ea 100644 (file)
@@ -80,7 +80,8 @@ struct hfs_btree *hfs_btree_open(struct super_block *sb, u32 id, btree_keycmp ke
                goto free_inode;
 
        /* Load the header */
-       head = (struct hfs_btree_header_rec *)(kmap(page) + sizeof(struct hfs_bnode_desc));
+       head = (struct hfs_btree_header_rec *)(kmap_local_page(page) +
+                                              sizeof(struct hfs_bnode_desc));
        tree->root = be32_to_cpu(head->root);
        tree->leaf_count = be32_to_cpu(head->leaf_count);
        tree->leaf_head = be32_to_cpu(head->leaf_head);
@@ -119,11 +120,12 @@ struct hfs_btree *hfs_btree_open(struct super_block *sb, u32 id, btree_keycmp ke
        tree->node_size_shift = ffs(size) - 1;
        tree->pages_per_bnode = (tree->node_size + PAGE_SIZE - 1) >> PAGE_SHIFT;
 
-       kunmap(page);
+       kunmap_local(head);
        put_page(page);
        return tree;
 
 fail_page:
+       kunmap_local(head);
        put_page(page);
 free_inode:
        tree->inode->i_mapping->a_ops = &hfs_aops;
@@ -169,7 +171,8 @@ void hfs_btree_write(struct hfs_btree *tree)
                return;
        /* Load the header */
        page = node->page[0];
-       head = (struct hfs_btree_header_rec *)(kmap(page) + sizeof(struct hfs_bnode_desc));
+       head = (struct hfs_btree_header_rec *)(kmap_local_page(page) +
+                                              sizeof(struct hfs_bnode_desc));
 
        head->root = cpu_to_be32(tree->root);
        head->leaf_count = cpu_to_be32(tree->leaf_count);
@@ -180,7 +183,7 @@ void hfs_btree_write(struct hfs_btree *tree)
        head->attributes = cpu_to_be32(tree->attributes);
        head->depth = cpu_to_be16(tree->depth);
 
-       kunmap(page);
+       kunmap_local(head);
        set_page_dirty(page);
        hfs_bnode_put(node);
 }
@@ -268,7 +271,7 @@ struct hfs_bnode *hfs_bmap_alloc(struct hfs_btree *tree)
 
        off += node->page_offset;
        pagep = node->page + (off >> PAGE_SHIFT);
-       data = kmap(*pagep);
+       data = kmap_local_page(*pagep);
        off &= ~PAGE_MASK;
        idx = 0;
 
@@ -281,7 +284,7 @@ struct hfs_bnode *hfs_bmap_alloc(struct hfs_btree *tree)
                                                idx += i;
                                                data[off] |= m;
                                                set_page_dirty(*pagep);
-                                               kunmap(*pagep);
+                                               kunmap_local(data);
                                                tree->free_nodes--;
                                                mark_inode_dirty(tree->inode);
                                                hfs_bnode_put(node);
@@ -290,14 +293,14 @@ struct hfs_bnode *hfs_bmap_alloc(struct hfs_btree *tree)
                                }
                        }
                        if (++off >= PAGE_SIZE) {
-                               kunmap(*pagep);
-                               data = kmap(*++pagep);
+                               kunmap_local(data);
+                               data = kmap_local_page(*++pagep);
                                off = 0;
                        }
                        idx += 8;
                        len--;
                }
-               kunmap(*pagep);
+               kunmap_local(data);
                nidx = node->next;
                if (!nidx) {
                        printk(KERN_DEBUG "create new bmap node...\n");
@@ -313,7 +316,7 @@ struct hfs_bnode *hfs_bmap_alloc(struct hfs_btree *tree)
                off = off16;
                off += node->page_offset;
                pagep = node->page + (off >> PAGE_SHIFT);
-               data = kmap(*pagep);
+               data = kmap_local_page(*pagep);
                off &= ~PAGE_MASK;
        }
 }
@@ -360,20 +363,20 @@ void hfs_bmap_free(struct hfs_bnode *node)
        }
        off += node->page_offset + nidx / 8;
        page = node->page[off >> PAGE_SHIFT];
-       data = kmap(page);
+       data = kmap_local_page(page);
        off &= ~PAGE_MASK;
        m = 1 << (~nidx & 7);
        byte = data[off];
        if (!(byte & m)) {
                pr_crit("trying to free free bnode %u(%d)\n",
                        node->this, node->type);
-               kunmap(page);
+               kunmap_local(data);
                hfs_bnode_put(node);
                return;
        }
        data[off] = byte & ~m;
        set_page_dirty(page);
-       kunmap(page);
+       kunmap_local(data);
        hfs_bnode_put(node);
        tree->free_nodes++;
        mark_inode_dirty(tree->inode);