xfs: use scalable vmap API

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Thursday, March 18, 2010 - 5:59 pm

Gitweb:     http://git.kernel.org/linus/8a262e573d30187b32b5534ec489446931239cc5
Commit:     8a262e573d30187b32b5534ec489446931239cc5
Parent:     cd9640a70d542ca026a812ac34733799da0a39c9
Author:     Alex Elder <aelder@sgi.com>
AuthorDate: Tue Mar 16 18:55:56 2010 +0000
Committer:  Alex Elder <aelder@sgi.com>
CommitDate: Tue Mar 16 15:40:36 2010 -0500

    xfs: use scalable vmap API
    
    Re-apply a commit that had been reverted due to regressions
    that have since been fixed.
    
        From 95f8e302c04c0b0c6de35ab399a5551605eeb006 Mon Sep 17 00:00:00 2001
        From: Nick Piggin <npiggin@suse.de>
        Date: Tue, 6 Jan 2009 14:43:09 +1100
    
        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>
    
    Only modifications here were a minor reformat, plus making the patch
    apply given the new use of xfs_buf_is_vmapped().
    
    Modified-by: Alex Elder <aelder@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Alex Elder <aelder@sgi.com>
---
 fs/xfs/linux-2.6/xfs_buf.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c
index 81f4ef2..bd111b7 100644
--- a/fs/xfs/linux-2.6/xfs_buf.c
+++ b/fs/xfs/linux-2.6/xfs_buf.c
@@ -268,7 +268,8 @@ xfs_buf_free(
 		uint		i;
 
 		if (xfs_buf_is_vmapped(bp))
-			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];
@@ -388,8 +389,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;
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
xfs: use scalable vmap API, Linux Kernel Mailing ..., (Thu Mar 18, 5:59 pm)