From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1176750AbdDYImL (ORCPT ); Tue, 25 Apr 2017 04:42:11 -0400 Received: from mx2.suse.de ([195.135.220.15]:38313 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1176676AbdDYImD (ORCPT ); Tue, 25 Apr 2017 04:42:03 -0400 Date: Tue, 25 Apr 2017 10:41:57 +0200 From: Jan Kara To: Andrey Ryabinin Cc: Alexander Viro , Konrad Rzeszutek Wilk , Ross Zwisler , Andrew Morton , Jan Kara , Jens Axboe , Johannes Weiner , Alexey Kuznetsov , Christoph Hellwig , Nikolay Borisov , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v2 4/4] mm/truncate: avoid pointless cleancache_invalidate_inode() calls. Message-ID: <20170425084157.GE2793@quack2.suse.cz> References: <20170414140753.16108-1-aryabinin@virtuozzo.com> <20170424164135.22350-1-aryabinin@virtuozzo.com> <20170424164135.22350-5-aryabinin@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170424164135.22350-5-aryabinin@virtuozzo.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon 24-04-17 19:41:35, Andrey Ryabinin wrote: > cleancache_invalidate_inode() called truncate_inode_pages_range() > and invalidate_inode_pages2_range() twice - on entry and on exit. > It's stupid and waste of time. It's enough to call it once at > exit. > > Signed-off-by: Andrey Ryabinin > Acked-by: Konrad Rzeszutek Wilk Looks sensible to me but I don't really know cleancache :). Anyway feel free to add: Acked-by: Jan Kara Honza > --- > mm/truncate.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/mm/truncate.c b/mm/truncate.c > index 8f12b0e..83a059e 100644 > --- a/mm/truncate.c > +++ b/mm/truncate.c > @@ -266,9 +266,8 @@ void truncate_inode_pages_range(struct address_space *mapping, > pgoff_t index; > int i; > > - cleancache_invalidate_inode(mapping); > if (mapping->nrpages == 0 && mapping->nrexceptional == 0) > - return; > + goto out; > > /* Offsets within partial pages */ > partial_start = lstart & (PAGE_SIZE - 1); > @@ -363,7 +362,7 @@ void truncate_inode_pages_range(struct address_space *mapping, > * will be released, just zeroed, so we can bail out now. > */ > if (start >= end) > - return; > + goto out; > > index = start; > for ( ; ; ) { > @@ -410,6 +409,8 @@ void truncate_inode_pages_range(struct address_space *mapping, > pagevec_release(&pvec); > index++; > } > + > +out: > cleancache_invalidate_inode(mapping); > } > EXPORT_SYMBOL(truncate_inode_pages_range); > @@ -623,9 +624,8 @@ int invalidate_inode_pages2_range(struct address_space *mapping, > int ret2 = 0; > int did_range_unmap = 0; > > - cleancache_invalidate_inode(mapping); > if (mapping->nrpages == 0 && mapping->nrexceptional == 0) > - return 0; > + goto out; > > pagevec_init(&pvec, 0); > index = start; > @@ -689,6 +689,8 @@ int invalidate_inode_pages2_range(struct address_space *mapping, > cond_resched(); > index++; > } > + > +out: > cleancache_invalidate_inode(mapping); > return ret; > } > -- > 2.10.2 > -- Jan Kara SUSE Labs, CR