hfs: replace kmap() with kmap_local_page() in bnode.c
[linux-2.6-block.git] / fs / hfs / bnode.c
index c83fd0e8404d351ee5ada8abc8cde614a0c8c566..2015e42e752a6bb55fe32478b185d204e459a600 100644 (file)
@@ -21,7 +21,6 @@ void hfs_bnode_read(struct hfs_bnode *node, void *buf, int off, int len)
        int pagenum;
        int bytes_read;
        int bytes_to_read;
-       void *vaddr;
 
        off += node->page_offset;
        pagenum = off >> PAGE_SHIFT;
@@ -33,9 +32,7 @@ void hfs_bnode_read(struct hfs_bnode *node, void *buf, int off, int len)
                page = node->page[pagenum];
                bytes_to_read = min_t(int, len - bytes_read, PAGE_SIZE - off);
 
-               vaddr = kmap_atomic(page);
-               memcpy(buf + bytes_read, vaddr + off, bytes_to_read);
-               kunmap_atomic(vaddr);
+               memcpy_from_page(buf + bytes_read, page, off, bytes_to_read);
 
                pagenum++;
                off = 0; /* page offset only applies to the first page */
@@ -80,8 +77,7 @@ void hfs_bnode_write(struct hfs_bnode *node, void *buf, int off, int len)
        off += node->page_offset;
        page = node->page[0];
 
-       memcpy(kmap(page) + off, buf, len);
-       kunmap(page);
+       memcpy_to_page(page, off, buf, len);
        set_page_dirty(page);
 }
 
@@ -105,8 +101,7 @@ void hfs_bnode_clear(struct hfs_bnode *node, int off, int len)
        off += node->page_offset;
        page = node->page[0];
 
-       memset(kmap(page) + off, 0, len);
-       kunmap(page);
+       memzero_page(page, off, len);
        set_page_dirty(page);
 }
 
@@ -123,9 +118,7 @@ void hfs_bnode_copy(struct hfs_bnode *dst_node, int dst,
        src_page = src_node->page[0];
        dst_page = dst_node->page[0];
 
-       memcpy(kmap(dst_page) + dst, kmap(src_page) + src, len);
-       kunmap(src_page);
-       kunmap(dst_page);
+       memcpy_page(dst_page, dst, src_page, src, len);
        set_page_dirty(dst_page);
 }
 
@@ -140,9 +133,9 @@ void hfs_bnode_move(struct hfs_bnode *node, int dst, int src, int len)
        src += node->page_offset;
        dst += node->page_offset;
        page = node->page[0];
-       ptr = kmap(page);
+       ptr = kmap_local_page(page);
        memmove(ptr + dst, ptr + src, len);
-       kunmap(page);
+       kunmap_local(ptr);
        set_page_dirty(page);
 }
 
@@ -346,13 +339,14 @@ struct hfs_bnode *hfs_bnode_find(struct hfs_btree *tree, u32 num)
        if (!test_bit(HFS_BNODE_NEW, &node->flags))
                return node;
 
-       desc = (struct hfs_bnode_desc *)(kmap(node->page[0]) + node->page_offset);
+       desc = (struct hfs_bnode_desc *)(kmap_local_page(node->page[0]) +
+                                        node->page_offset);
        node->prev = be32_to_cpu(desc->prev);
        node->next = be32_to_cpu(desc->next);
        node->num_recs = be16_to_cpu(desc->num_recs);
        node->type = desc->type;
        node->height = desc->height;
-       kunmap(node->page[0]);
+       kunmap_local(desc);
 
        switch (node->type) {
        case HFS_NODE_HEADER:
@@ -436,14 +430,12 @@ struct hfs_bnode *hfs_bnode_create(struct hfs_btree *tree, u32 num)
        }
 
        pagep = node->page;
-       memset(kmap(*pagep) + node->page_offset, 0,
-              min((int)PAGE_SIZE, (int)tree->node_size));
+       memzero_page(*pagep, node->page_offset,
+                    min((int)PAGE_SIZE, (int)tree->node_size));
        set_page_dirty(*pagep);
-       kunmap(*pagep);
        for (i = 1; i < tree->pages_per_bnode; i++) {
-               memset(kmap(*++pagep), 0, PAGE_SIZE);
+               memzero_page(*++pagep, 0, PAGE_SIZE);
                set_page_dirty(*pagep);
-               kunmap(*pagep);
        }
        clear_bit(HFS_BNODE_NEW, &node->flags);
        wake_up(&node->lock_wq);