lkml.org 
[lkml]   [2007]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/7] copy_vma for hugetlbfs
    Date

    Signed-off-by: Adam Litke <agl@us.ibm.com>
    ---

    fs/hugetlbfs/inode.c | 6 ++++++
    mm/memory.c | 4 ++--
    2 files changed, 8 insertions(+), 2 deletions(-)

    diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
    index 8c718a3..2452dde 100644
    --- a/fs/hugetlbfs/inode.c
    +++ b/fs/hugetlbfs/inode.c
    @@ -36,6 +36,7 @@
    static const struct super_operations hugetlbfs_ops;
    static const struct address_space_operations hugetlbfs_aops;
    const struct file_operations hugetlbfs_file_operations;
    +static const struct pagetable_operations_struct hugetlbfs_pagetable_ops;
    static const struct inode_operations hugetlbfs_dir_inode_operations;
    static const struct inode_operations hugetlbfs_inode_operations;

    @@ -70,6 +71,7 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma)
    */
    vma->vm_flags |= VM_HUGETLB | VM_RESERVED;
    vma->vm_ops = &hugetlb_vm_ops;
    + vma->pagetable_ops = &hugetlbfs_pagetable_ops;

    vma_len = (loff_t)(vma->vm_end - vma->vm_start);

    @@ -563,6 +565,10 @@ const struct file_operations hugetlbfs_file_operations = {
    .get_unmapped_area = hugetlb_get_unmapped_area,
    };

    +static const struct pagetable_operations_struct hugetlbfs_pagetable_ops = {
    + .copy_vma = copy_hugetlb_page_range,
    +};
    +
    static const struct inode_operations hugetlbfs_dir_inode_operations = {
    .create = hugetlbfs_create,
    .lookup = simple_lookup,
    diff --git a/mm/memory.c b/mm/memory.c
    index e7066e7..69bb0b3 100644
    --- a/mm/memory.c
    +++ b/mm/memory.c
    @@ -602,8 +602,8 @@ int copy_page_range(struct mm_struct *dst_mm, struct mm_struct *src_mm,
    return 0;
    }

    - if (is_vm_hugetlb_page(vma))
    - return copy_hugetlb_page_range(dst_mm, src_mm, vma);
    + if (has_pt_op(vma, copy_vma))
    + return pt_op(vma, copy_vma)(dst_mm, src_mm, vma);

    dst_pgd = pgd_offset(dst_mm, addr);
    src_pgd = pgd_offset(src_mm, addr);
    -
    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/
    \
     
     \ /
      Last update: 2007-03-19 21:11    [W:0.034 / U:122.756 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site