Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934660Ab3CNR4t (ORCPT ); Thu, 14 Mar 2013 13:56:49 -0400 Received: from mga03.intel.com ([143.182.124.21]:1032 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758203Ab3CNRtR (ORCPT ); Thu, 14 Mar 2013 13:49:17 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.84,845,1355126400"; d="scan'208";a="270892710" From: "Kirill A. Shutemov" To: Andrea Arcangeli , Andrew Morton , Al Viro , Hugh Dickins Cc: Wu Fengguang , Jan Kara , Mel Gorman , linux-mm@kvack.org, Andi Kleen , Matthew Wilcox , "Kirill A. Shutemov" , Hillf Danton , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, "Kirill A. Shutemov" Subject: [PATCHv2, RFC 00/30] Transparent huge page cache Date: Thu, 14 Mar 2013 19:50:05 +0200 Message-Id: <1363283435-7666-1-git-send-email-kirill.shutemov@linux.intel.com> X-Mailer: git-send-email 1.7.10.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3666 Lines: 89 From: "Kirill A. Shutemov" Here's the second version of the patchset. The intend of the work is get code ready to enable transparent huge page cache for the most simple fs -- ramfs. We have read()/write()/mmap() functionality now. Still plenty work ahead. Any feedback is welcome. Changes since v1: - mmap(); - fix add_to_page_cache_locked() and delete_from_page_cache(); - introduce mapping_can_have_hugepages(); - call split_huge_page() only for head page in filemap_fault(); - wait_split_huge_page(): serialize over i_mmap_mutex too; - lru_add_page_tail: avoid PageUnevictable on active/inactive lru lists; - fix off-by-one in zero_huge_user_segment(); - THP_WRITE_ALLOC/THP_WRITE_FAILED counters; TODO: - memcg accounting has not yet evaluated; - collapse; - migration (?); - stats, knobs, etc.; - tmpfs/shmem enabling; Kirill A. Shutemov (30): block: implement add_bdi_stat() mm: implement zero_huge_user_segment and friends mm: drop actor argument of do_generic_file_read() radix-tree: implement preload for multiple contiguous elements thp, mm: avoid PageUnevictable on active/inactive lru lists thp, mm: basic defines for transparent huge page cache thp, mm: introduce mapping_can_have_hugepages() predicate thp, mm: rewrite add_to_page_cache_locked() to support huge pages thp, mm: rewrite delete_from_page_cache() to support huge pages thp, mm: locking tail page is a bug thp, mm: handle tail pages in page_cache_get_speculative() thp, mm: add event counters for huge page alloc on write to a file thp, mm: implement grab_cache_huge_page_write_begin() thp, mm: naive support of thp in generic read/write routines thp, libfs: initial support of thp in simple_read/write_begin/write_end thp: handle file pages in split_huge_page() thp: wait_split_huge_page(): serialize over i_mmap_mutex too thp, mm: truncate support for transparent huge page cache thp, mm: split huge page on mmap file page ramfs: enable transparent huge page cache x86-64, mm: proper alignment mappings with hugepages mm: add huge_fault() callback to vm_operations_struct thp: prepare zap_huge_pmd() to uncharge file pages thp: move maybe_pmd_mkwrite() out of mk_huge_pmd() thp, mm: basic huge_fault implementation for generic_file_vm_ops thp: extract fallback path from do_huge_pmd_anonymous_page() to a function thp: initial implementation of do_huge_linear_fault() thp: handle write-protect exception to file-backed huge pages thp: call __vma_adjust_trans_huge() for file-backed VMA thp: map file-backed huge pages on fault arch/x86/kernel/sys_x86_64.c | 13 +- fs/libfs.c | 50 ++++- fs/ramfs/inode.c | 6 +- include/linux/backing-dev.h | 10 + include/linux/huge_mm.h | 36 +++- include/linux/mm.h | 16 ++ include/linux/pagemap.h | 24 ++- include/linux/radix-tree.h | 3 + include/linux/vm_event_item.h | 2 + lib/radix-tree.c | 32 ++- mm/filemap.c | 283 +++++++++++++++++++++---- mm/huge_memory.c | 462 ++++++++++++++++++++++++++++++++++------- mm/memory.c | 31 ++- mm/swap.c | 3 +- mm/truncate.c | 12 ++ mm/vmstat.c | 2 + 16 files changed, 842 insertions(+), 143 deletions(-) -- 1.7.10.4 -- 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/