From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758721Ab3EWLqH (ORCPT ); Thu, 23 May 2013 07:46:07 -0400 Received: from mga02.intel.com ([134.134.136.20]:27348 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758471Ab3EWLqE (ORCPT ); Thu, 23 May 2013 07:46:04 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.87,728,1363158000"; d="scan'208";a="338811246" From: "Kirill A. Shutemov" To: Hillf Danton Cc: "Kirill A. Shutemov" , Andrea Arcangeli , Andrew Morton , Al Viro , Hugh Dickins , Wu Fengguang , Jan Kara , Mel Gorman , linux-mm@kvack.org, Andi Kleen , Matthew Wilcox , "Kirill A. Shutemov" , Dave Hansen , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org In-Reply-To: References: <1368321816-17719-1-git-send-email-kirill.shutemov@linux.intel.com> <1368321816-17719-40-git-send-email-kirill.shutemov@linux.intel.com> Subject: Re: [PATCHv4 39/39] thp: map file-backed huge pages on fault Content-Transfer-Encoding: 7bit Message-Id: <20130523114829.B5692E0090@blue.fi.intel.com> Date: Thu, 23 May 2013 14:48:29 +0300 (EEST) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hillf Danton wrote: > On Sun, May 12, 2013 at 9:23 AM, Kirill A. Shutemov > wrote: > > From: "Kirill A. Shutemov" > > > > Look like all pieces are in place, we can map file-backed huge-pages > > now. > > > > Signed-off-by: Kirill A. Shutemov > > --- > > include/linux/huge_mm.h | 4 +++- > > mm/memory.c | 5 ++++- > > 2 files changed, 7 insertions(+), 2 deletions(-) > > > > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > > index f4d6626..903f097 100644 > > --- a/include/linux/huge_mm.h > > +++ b/include/linux/huge_mm.h > > @@ -78,7 +78,9 @@ extern bool is_vma_temporary_stack(struct vm_area_struct *vma); > > (1< > ((__vma)->vm_flags & VM_HUGEPAGE))) && \ > > !((__vma)->vm_flags & VM_NOHUGEPAGE) && \ > > - !is_vma_temporary_stack(__vma)) > > + !is_vma_temporary_stack(__vma) && \ > > + (!(__vma)->vm_ops || \ > > + mapping_can_have_hugepages((__vma)->vm_file->f_mapping))) > > Redefine, why? > > > #define transparent_hugepage_defrag(__vma) \ > > ((transparent_hugepage_flags & \ > > (1< > diff --git a/mm/memory.c b/mm/memory.c > > index ebff552..7fe9752 100644 > > --- a/mm/memory.c > > +++ b/mm/memory.c > > @@ -3939,10 +3939,13 @@ retry: > > if (!pmd) > > return VM_FAULT_OOM; > > if (pmd_none(*pmd) && transparent_hugepage_enabled(vma)) { > > - int ret = 0; > > + int ret; > > if (!vma->vm_ops) > > ret = do_huge_pmd_anonymous_page(mm, vma, address, > > pmd, flags); > > Ah vma->vm_ops is checked here, so > else if (mapping_can_have_hugepages()) Okay, it's cleaner. -- Kirill A. Shutemov