From: Mike Kravetz <mike.kravetz@oracle.com>
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-api@vger.kernel.org
Cc: Dave Hansen <dave.hansen@linux.intel.com>,
Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>,
David Rientjes <rientjes@google.com>,
Hugh Dickins <hughd@google.com>,
Davidlohr Bueso <dave@stgolabs.net>,
Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
Hillf Danton <hillf.zj@alibaba-inc.com>,
Christoph Hellwig <hch@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
Michal Hocko <mhocko@suse.cz>,
Mike Kravetz <mike.kravetz@oracle.com>
Subject: [PATCH v4 00/10] hugetlbfs: add fallocate support
Date: Tue, 21 Jul 2015 11:09:34 -0700 [thread overview]
Message-ID: <1437502184-14269-1-git-send-email-mike.kravetz@oracle.com> (raw)
Changes in this revision address the minor comment and function name
issues brought up by Naoya Horiguchi. Patch set is also rebased on
current "mmotm/since-4.1". This revision does not introduce any
functional changes.
As suggested during the RFC process, tests have been proposed to
libhugetlbfs as described at:
http://librelist.com/browser//libhugetlbfs/2015/6/25/patch-tests-add-tests-for-fallocate-system-call/
fallocate(2) man page modifications are also necessary to specify
that fallocate for hugetlbfs only operates on whole pages. This
change will be submitted once the code has stabilized and been
proposed for merging.
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.
v4:
Renamed vma_abort_reservation() to vma_end_reservation().
v3:
Fixed issue with region_chg to recheck if there are sufficient
entries in the cache after acquiring lock.
v2:
Fixed leak in resv_map_release discovered by Hillf Danton.
Used LONG_MAX as indicator of truncate function for region_del.
v1:
Add a cache of region descriptors to the resv_map for use by
region_add in case hole punch deletes entries necessary for
a successful operation.
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() 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
v3 patch series:
Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Hillf Danton <hillf.zj@alibaba-inc.com>
Mike Kravetz (10):
mm/hugetlb: add cache of descriptors to resv_map for region_add
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 | 17 +-
mm/hugetlb.c | 424 ++++++++++++++++++++++++++++++++++++++----------
mm/madvise.c | 2 +-
4 files changed, 621 insertions(+), 103 deletions(-)
--
2.1.0
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next reply other threads:[~2015-07-21 18:09 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-21 18:09 Mike Kravetz [this message]
2015-07-21 18:09 ` [PATCH v4 01/10] mm/hugetlb: add cache of descriptors to resv_map for region_add Mike Kravetz
2015-07-22 22:03 ` Andrew Morton
2015-07-21 18:09 ` [PATCH v4 02/10] mm/hugetlb: add region_del() to delete a specific range of entries Mike Kravetz
2015-07-21 18:09 ` [PATCH v4 03/10] mm/hugetlb: expose hugetlb fault mutex for use by fallocate Mike Kravetz
2015-07-22 22:03 ` Andrew Morton
2015-07-21 18:09 ` [PATCH v4 04/10] hugetlbfs: hugetlb_vmtruncate_list() needs to take a range to delete Mike Kravetz
2015-07-21 18:09 ` [PATCH v4 05/10] hugetlbfs: truncate_hugepages() takes a range of pages Mike Kravetz
2015-07-21 18:09 ` [PATCH v4 06/10] mm/hugetlb: vma_has_reserves() needs to handle fallocate hole punch Mike Kravetz
2015-07-21 18:09 ` [PATCH v4 07/10] mm/hugetlb: alloc_huge_page handle areas hole punched by fallocate Mike Kravetz
2015-07-21 18:09 ` [PATCH v4 08/10] hugetlbfs: New huge_add_to_page_cache helper routine Mike Kravetz
2015-07-21 18:09 ` [PATCH v4 09/10] hugetlbfs: add hugetlbfs_fallocate() Mike Kravetz
[not found] ` <1437502184-14269-10-git-send-email-mike.kravetz-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2015-07-22 22:03 ` Andrew Morton
2015-07-22 22:23 ` Mike Kravetz
[not found] ` <55B017EE.5020203-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2015-07-22 22:30 ` Andrew Morton
2015-07-21 18:09 ` [PATCH v4 10/10] mm: madvise allow remove operation for hugetlbfs Mike Kravetz
2015-07-22 22:03 ` [PATCH v4 00/10] hugetlbfs: add fallocate support Andrew Morton
[not found] ` <1437502184-14269-1-git-send-email-mike.kravetz-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2015-07-22 22:06 ` Andrew Morton
[not found] ` <20150722150647.2597c7e5be9ee1eecc438b6f-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2015-07-22 22:19 ` Davidlohr Bueso
[not found] ` <1437603594.3298.5.camel-h16yJtLeMjHk1uMJSBkQmQ@public.gmane.org>
2015-07-22 22:30 ` Andrew Morton
[not found] ` <20150722153023.e8f15eb4e490f79cc029c8cd-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2015-07-22 22:34 ` Davidlohr Bueso
[not found] ` <1437604474.3298.7.camel-h16yJtLeMjHk1uMJSBkQmQ@public.gmane.org>
2015-07-22 22:37 ` Andrew Morton
2015-07-22 22:50 ` Davidlohr Bueso
2015-07-22 22:54 ` Davidlohr Bueso
2015-07-22 23:18 ` Mike Kravetz
2015-07-22 23:54 ` Davidlohr Bueso
2015-07-23 0:05 ` David Rientjes
2015-07-23 15:17 ` Eric B Munson
2015-07-23 17:05 ` Mike Kravetz
[not found] ` <55B11EEF.1070605-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2015-07-23 17:17 ` Eric B Munson
2015-07-23 17:29 ` Mike Kravetz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1437502184-14269-1-git-send-email-mike.kravetz@oracle.com \
--to=mike.kravetz@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=dave.hansen@linux.intel.com \
--cc=dave@stgolabs.net \
--cc=hch@infradead.org \
--cc=hillf.zj@alibaba-inc.com \
--cc=hughd@google.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
--cc=n-horiguchi@ah.jp.nec.com \
--cc=rientjes@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).