From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754178AbcJKVsX (ORCPT ); Tue, 11 Oct 2016 17:48:23 -0400 Received: from mail-lf0-f66.google.com ([209.85.215.66]:36653 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752998AbcJKVsG (ORCPT ); Tue, 11 Oct 2016 17:48:06 -0400 Date: Wed, 12 Oct 2016 00:47:26 +0300 From: "Kirill A. Shutemov" To: Jan Kara Cc: "Kirill A. Shutemov" , "Theodore Ts'o" , Andreas Dilger , Jan Kara , Andrew Morton , Alexander Viro , Hugh Dickins , Andrea Arcangeli , Dave Hansen , Vlastimil Babka , Matthew Wilcox , Ross Zwisler , linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org Subject: Re: [PATCHv3 12/41] thp: handle write-protection faults for file THP Message-ID: <20161011214726.GB27110@node.shutemov.name> References: <20160915115523.29737-1-kirill.shutemov@linux.intel.com> <20160915115523.29737-13-kirill.shutemov@linux.intel.com> <20161011154750.GL6952@quack2.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20161011154750.GL6952@quack2.suse.cz> User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Oct 11, 2016 at 05:47:50PM +0200, Jan Kara wrote: > On Thu 15-09-16 14:54:54, Kirill A. Shutemov wrote: > > For filesystems that wants to be write-notified (has mkwrite), we will > > encount write-protection faults for huge PMDs in shared mappings. > > > > The easiest way to handle them is to clear the PMD and let it refault as > > wriable. > > > > Signed-off-by: Kirill A. Shutemov > > --- > > mm/memory.c | 11 ++++++++++- > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > diff --git a/mm/memory.c b/mm/memory.c > > index 83be99d9d8a1..aad8d5c6311f 100644 > > --- a/mm/memory.c > > +++ b/mm/memory.c > > @@ -3451,8 +3451,17 @@ static int wp_huge_pmd(struct fault_env *fe, pmd_t orig_pmd) > > return fe->vma->vm_ops->pmd_fault(fe->vma, fe->address, fe->pmd, > > fe->flags); > > > > + if (fe->vma->vm_flags & VM_SHARED) { > > + /* Clear PMD */ > > + zap_page_range_single(fe->vma, fe->address, > > + HPAGE_PMD_SIZE, NULL); > > + VM_BUG_ON(!pmd_none(*fe->pmd)); > > + > > + /* Refault to establish writable PMD */ > > + return 0; > > + } > > + > > Since we want to write-protect the page table entry on each page writeback > and write-enable then on the next write, this is relatively expensive. > Would it be that complicated to handle this fully in ->pmd_fault handler > like we do for DAX? > > Maybe it doesn't have to be done now but longer term I guess it might make > sense. Right. This approach is just simplier to implement. We can rework it if it will show up on traces. > Otherwise the patch looks good so feel free to add: > > Reviewed-by: Jan Kara Thanks! -- Kirill A. Shutemov