From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757101AbcAYLfe (ORCPT ); Mon, 25 Jan 2016 06:35:34 -0500 Received: from mx2.suse.de ([195.135.220.15]:60175 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756885AbcAYLfc (ORCPT ); Mon, 25 Jan 2016 06:35:32 -0500 Date: Mon, 25 Jan 2016 12:35:44 +0100 From: Jan Kara To: Mel Gorman Cc: Andrew Morton , Hugh Dickins , Jan Kara , Linux-FSDevel , Linux-MM , LKML Subject: Re: [PATCH 1/2] mm: filemap: Remove redundant code in do_read_cache_page Message-ID: <20160125113544.GF20933@quack.suse.cz> References: <1453716204-20409-1-git-send-email-mgorman@techsingularity.net> <1453716204-20409-2-git-send-email-mgorman@techsingularity.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1453716204-20409-2-git-send-email-mgorman@techsingularity.net> 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 25-01-16 10:03:23, Mel Gorman wrote: > do_read_cache_page and __read_cache_page duplicates page filler code > when filling the page for the first time. This patch simply removes the > duplicate logic. > > Signed-off-by: Mel Gorman Looks good to me. You can add: Reviewed-by: Jan Kara Honza > --- > mm/filemap.c | 43 ++++++++++++------------------------------- > 1 file changed, 12 insertions(+), 31 deletions(-) > > diff --git a/mm/filemap.c b/mm/filemap.c > index bc943867d68c..aa38593d0cd5 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -2283,7 +2283,7 @@ static struct page *wait_on_page_read(struct page *page) > return page; > } > > -static struct page *__read_cache_page(struct address_space *mapping, > +static struct page *do_read_cache_page(struct address_space *mapping, > pgoff_t index, > int (*filler)(void *, struct page *), > void *data, > @@ -2305,31 +2305,19 @@ static struct page *__read_cache_page(struct address_space *mapping, > /* Presumably ENOMEM for radix tree node */ > return ERR_PTR(err); > } > + > +filler: > err = filler(data, page); > if (err < 0) { > page_cache_release(page); > - page = ERR_PTR(err); > - } else { > - page = wait_on_page_read(page); > + return ERR_PTR(err); > } > - } > - return page; > -} > - > -static struct page *do_read_cache_page(struct address_space *mapping, > - pgoff_t index, > - int (*filler)(void *, struct page *), > - void *data, > - gfp_t gfp) > - > -{ > - struct page *page; > - int err; > > -retry: > - page = __read_cache_page(mapping, index, filler, data, gfp); > - if (IS_ERR(page)) > - return page; > + page = wait_on_page_read(page); > + if (IS_ERR(page)) > + return page; > + goto out; > + } > if (PageUptodate(page)) > goto out; > > @@ -2337,21 +2325,14 @@ static struct page *do_read_cache_page(struct address_space *mapping, > if (!page->mapping) { > unlock_page(page); > page_cache_release(page); > - goto retry; > + goto repeat; > } > if (PageUptodate(page)) { > unlock_page(page); > goto out; > } > - err = filler(data, page); > - if (err < 0) { > - page_cache_release(page); > - return ERR_PTR(err); > - } else { > - page = wait_on_page_read(page); > - if (IS_ERR(page)) > - return page; > - } > + goto filler; > + > out: > mark_page_accessed(page); > return page; > -- > 2.6.4 > -- Jan Kara SUSE Labs, CR