Messages in this thread Patch in this message | | | Subject | [4/11] hugetlb: wrap hugetlb_prefault with prefault_key() | From | William Lee Irwin III <> | Date | Tue, 12 Nov 2002 00:28:53 -0800 |
| |
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/
| |