lkml.org 
[lkml]   [2015]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[RFC v5 PATCH 0/9] hugetlbfs: add fallocate support
    Date
    No major changes since last RFC.  Externalized existing hugetlb
    fault mutex code. Added more comments to alloc_huge_page reservation
    handling as I could not come up with a good way to encapsulate.
    libhugetlbfs test cases and man page updates will be included with
    a later request for patch inclusion.

    hugetlbfs is used today by applications that want a high degree of
    control over huge page usage. Often, large hugetlbfs files are used
    to map a large number huge pages into the application processes.
    The applications know when page ranges within these large files will
    no longer be used, and ideally would like to release them back to
    the subpool or global pools for other uses. The fallocate() system
    call provides an interface for preallocation and hole punching within
    files. This patch set adds fallocate functionality to hugetlbfs.

    RFC v5:
    Simply made existing hugetlb fault mutex hash routine available for
    use by fallocate.
    Unable to come up with good reservation encapsulation routines for
    alloc_huge_page, so attempted to comment better.
    RFC v4:
    Removed alloc_huge_page/hugetlb_reserve_pages race patches as already
    in mmotm
    Moved hugetlb_fix_reserve_counts in series as suggested by Naoya Horiguchi
    Inline'ed hugetlb_fault_mutex routines as suggested by Davidlohr Bueso and
    existing code changed to use new interfaces as suggested by Naoya
    fallocate preallocation code cleaned up and made simpler
    Modified alloc_huge_page to handle special case where allocation is
    for a hole punched area with spool reserves
    RFC v3:
    Folded in patch for alloc_huge_page/hugetlb_reserve_pages race
    in current code
    fallocate allocation and hole punch is synchronized with page
    faults via existing mutex table
    hole punch uses existing hugetlb_vmtruncate_list instead of more
    generic unmap_mapping_range for unmapping
    Error handling for the case when region_del() fails
    RFC v2:
    Addressed alignment and error handling issues noticed by Hillf Danton
    New region_del() routine for region tracking/resv_map of ranges
    Fixed several issues found during more extensive testing
    Error handling in region_del() when kmalloc() fails stills needs
    to be addressed
    madvise remove support remains

    Mike Kravetz (9):
    mm/hugetlb: add region_del() to delete a specific range of entries
    mm/hugetlb: expose hugetlb fault mutex for use by fallocate
    hugetlbfs: hugetlb_vmtruncate_list() needs to take a range to delete
    hugetlbfs: truncate_hugepages() takes a range of pages
    mm/hugetlb: vma_has_reserves() needs to handle fallocate hole punch
    mm/hugetlb: alloc_huge_page handle areas hole punched by fallocate
    hugetlbfs: New huge_add_to_page_cache helper routine
    hugetlbfs: add hugetlbfs_fallocate()
    mm: madvise allow remove operation for hugetlbfs

    fs/hugetlbfs/inode.c | 281 ++++++++++++++++++++++++++++++++++++++++++++----
    include/linux/hugetlb.h | 14 ++-
    mm/hugetlb.c | 245 +++++++++++++++++++++++++++++------------
    mm/madvise.c | 2 +-
    4 files changed, 456 insertions(+), 86 deletions(-)

    --
    2.1.0

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2015-06-23 03:01    [W:6.337 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site