[RFC v3 PATCH 00/10] hugetlbfs: add fallocate support

From: Mike Kravetz
Date: Thu May 21 2015 - 11:49:54 EST


There have been numerous changes to this patch set since the previous
RFC. Most notably in the area of synchronization and race condition
handling. The patch set now stands up to a series of functionality
and stress testing.

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 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() fauils
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 (10):
mm/hugetlb: compute/return the number of regions added by region_add()
mm/hugetlb: handle races in alloc_huge_page and hugetlb_reserve_pages
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
hugetlbfs: New huge_add_to_page_cache helper routine
mm/hugetlb: vma_has_reserves() needs to handle fallocate hole punch
hugetlbfs: add hugetlbfs_fallocate()
mm: madvise allow remove operation for hugetlbfs

fs/hugetlbfs/inode.c | 282 ++++++++++++++++++++++++++++++++++++++++++++----
include/linux/hugetlb.h | 12 ++-
mm/hugetlb.c | 238 ++++++++++++++++++++++++++++++++--------
mm/madvise.c | 2 +-
4 files changed, 469 insertions(+), 65 deletions(-)

--
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/