Skip to contentSkip to conversation

hugetlb: wrap hugetlb_prefault with prefault_key()

PATCH New William Lee Irwin III 1 participant 1 message Nov 12, 2002

lore
Share & tools
lore
#0 lore raw

PATCH 4/11 hugetlb: wrap hugetlb_prefault with prefault_key()

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(-)
arch/i386/mm/hugetlbpage.c +8 -4
diff -urpN htlb-2.5.47-3/arch/i386/mm/hugetlbpage.c htlb-2.5.47-4/arch/i386/mm/hugetlbpage.c
@@ -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;