mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 00:22:00 +02:00
[XFS] use scalable vmap API
Implement XFS's large buffer support with the new vmap APIs. See the vmap
rewrite (db64fe02) 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>
This commit is contained in:
parent
958f8c0e4f
commit
0087167c9d
|
|
@ -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];
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user