From patchwork Wed May 4 17:42:27 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 94104 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 8A109B6F53 for ; Thu, 5 May 2011 03:42:59 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755049Ab1EDRmy (ORCPT ); Wed, 4 May 2011 13:42:54 -0400 Received: from e34.co.us.ibm.com ([32.97.110.152]:40069 "EHLO e34.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755043Ab1EDRmv (ORCPT ); Wed, 4 May 2011 13:42:51 -0400 Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e34.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id p44HUPP5005702; Wed, 4 May 2011 11:30:25 -0600 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p44HgUDj065580; Wed, 4 May 2011 11:42:34 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p44HgRLJ013943; Wed, 4 May 2011 11:42:29 -0600 Received: from tux1.beaverton.ibm.com (elm3b50.beaverton.ibm.com [9.47.67.50]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p44HgR98013934; Wed, 4 May 2011 11:42:27 -0600 Received: by tux1.beaverton.ibm.com (Postfix, from userid 501) id 9486613E900; Wed, 4 May 2011 10:42:27 -0700 (PDT) Date: Wed, 4 May 2011 10:42:27 -0700 From: "Darrick J. Wong" To: "Theodore Ts'o" Cc: Christoph Hellwig , Chris Mason , Jeff Layton , Jan Kara , Dave Chinner , Joel Becker , "Martin K. Petersen" , Jens Axboe , linux-kernel , linux-fsdevel , Mingming Cao , linux-scsi , Dave Hansen , linux-mm@kvack.org, linux-ext4 Subject: [PATCH v3 3/3] mm: Wait for writeback when grabbing pages to begin a write Message-ID: <20110504174227.GH20579@tux1.beaverton.ibm.com> Reply-To: djwong@us.ibm.com References: <20110321164305.GC7153@quack.suse.cz> <20110406232938.GF1110@tux1.beaverton.ibm.com> <20110407165700.GB7363@quack.suse.cz> <20110408203135.GH1110@tux1.beaverton.ibm.com> <20110411124229.47bc28f6@corrin.poochiereds.net> <1302543595-sup-4352@think> <1302569212.2580.13.camel@mingming-laptop> <20110412005719.GA23077@infradead.org> <1302742128.2586.274.camel@mingming-laptop> <20110422000226.GA22189@tux1.beaverton.ibm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20110422000226.GA22189@tux1.beaverton.ibm.com> User-Agent: Mutt/1.5.17+20080114 (2008-01-14) Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org When grabbing a page for a buffered IO write, the mm should wait for writeback on the page to complete so that the page does not become writable during the IO operation. Signed-off-by: Darrick J. Wong --- mm/filemap.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/mm/filemap.c b/mm/filemap.c index c641edf..c22675f 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2287,8 +2287,10 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping, gfp_notmask = __GFP_FS; repeat: page = find_lock_page(mapping, index); - if (page) + if (page) { + wait_on_page_writeback(page); return page; + } page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask); if (!page) @@ -2301,6 +2303,7 @@ repeat: goto repeat; return NULL; } + wait_on_page_writeback(page); return page; } EXPORT_SYMBOL(grab_cache_page_write_begin);