Skip to content

Commit

Permalink
[XFS] use scalable vmap API
Browse files Browse the repository at this point in the history
Implement XFS's large buffer support with the new vmap APIs. See the vmap
rewrite (db64fe0) for some numbers. The biggest improvement that comes from
using the new APIs is avoiding the global KVA allocation lock on every call.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Reviewed-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
  • Loading branch information
Nick Piggin authored and Lachlan McIlroy committed Jan 9, 2009
1 parent 958f8c0 commit 0087167
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions fs/xfs/linux-2.6/xfs_buf.c
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ xfs_buf_free(
uint i;

if ((bp->b_flags & XBF_MAPPED) && (bp->b_page_count > 1))
vunmap(bp->b_addr - bp->b_offset);
vm_unmap_ram(bp->b_addr - bp->b_offset, bp->b_page_count);

for (i = 0; i < bp->b_page_count; i++) {
struct page *page = bp->b_pages[i];
Expand Down Expand Up @@ -386,8 +386,8 @@ _xfs_buf_map_pages(
bp->b_addr = page_address(bp->b_pages[0]) + bp->b_offset;
bp->b_flags |= XBF_MAPPED;
} else if (flags & XBF_MAPPED) {
bp->b_addr = vmap(bp->b_pages, bp->b_page_count,
VM_MAP, PAGE_KERNEL);
bp->b_addr = vm_map_ram(bp->b_pages, bp->b_page_count,
-1, PAGE_KERNEL);
if (unlikely(bp->b_addr == NULL))
return -ENOMEM;
bp->b_addr += bp->b_offset;
Expand Down

0 comments on commit 0087167

Please sign in to comment.