[4/11] hugetlb: wrap hugetlb_prefault with prefault_key()

From: William Lee Irwin III (wli@holomorphy.com)
Date: Tue Nov 12 2002 - 03:28:53 EST


This wraps hugetlb_prefault() with prefault_key() in order to isolate the
dependency on inodes for prefaulting the hugetlb vma.

 hugetlbpage.c | 12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff -urpN htlb-2.5.47-3/arch/i386/mm/hugetlbpage.c htlb-2.5.47-4/arch/i386/mm/hugetlbpage.c
--- htlb-2.5.47-3/arch/i386/mm/hugetlbpage.c 2002-11-11 21:23:55.000000000 -0800
+++ htlb-2.5.47-4/arch/i386/mm/hugetlbpage.c 2002-11-11 21:30:36.000000000 -0800
@@ -350,12 +350,18 @@ static int check_size_prot(struct inode
         return 0;
 }
 
+static int prefault_key(struct hugetlb_key *key, struct vm_area_struct *vma)
+{
+ struct inode *inode = (struct inode *)key;
+
+ return hugetlb_prefault(inode->i_mapping, vma);
+}
+
 static int alloc_shared_hugetlb_pages(int key, unsigned long addr, unsigned long len, int prot, int flag)
 {
         struct mm_struct *mm = current->mm;
         struct vm_area_struct *vma;
         struct inode *inode;
- struct address_space *mapping;
         int retval = -ENOMEM;
         int newalloc = 0;
 
@@ -367,8 +373,6 @@ static int alloc_shared_hugetlb_pages(in
         } else
                 spin_unlock(&htlbpage_lock);
 
- mapping = inode->i_mapping;
-
         addr = do_mmap_pgoff(NULL, addr, len, (unsigned long) prot,
                         MAP_NORESERVE|MAP_FIXED|MAP_PRIVATE|MAP_ANONYMOUS, 0);
         if (IS_ERR((void *) addr))
@@ -380,7 +384,7 @@ static int alloc_shared_hugetlb_pages(in
                 goto freeinode;
         }
 
- retval = hugetlb_prefault(mapping, vma);
+ retval = prefault_key((struct hugetlb_key *)inode, vma);
         if (retval)
                 goto out;
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Nov 15 2002 - 22:00:24 EST