From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Lameter Subject: [40/41] Do not use f_mapping in simple_prepare_write() Date: Mon, 10 Sep 2007 23:04:30 -0700 Message-ID: <20070911060434.890764895@sgi.com> References: <20070911060349.993975297@sgi.com> Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org To: torvalds@linux-foundation.org Return-path: Received: from netops-testserver-4-out.sgi.com ([192.48.171.29]:56544 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1762071AbXIKGEg (ORCPT ); Tue, 11 Sep 2007 02:04:36 -0400 Cc: Christoph Hellwig , Mel Gorman Cc: William Lee Irwin III , David Chinner Cc: Jens Axboe , Badari Pulavarty Cc: Maxim Levitsky , Fengguang Wu Cc: swin wang , totty.lu@gmail.com, hugh@veritas.com Cc: joern@lazybastard.org Content-Disposition: inline; filename=0042-Do-not-use-f_mapping-in-simple_prepare_write.patch Sender: linux-fsdevel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Seems that simple_prepare_write() may occasionally be called for a page that does not have a mapping yet. Retrieve the page size from the page instead of the mapping. Signed-off-by: Christoph Lameter --- fs/libfs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: linux-2.6/fs/libfs.c =================================================================== --- linux-2.6.orig/fs/libfs.c 2007-09-05 01:22:02.000000000 -0700 +++ linux-2.6/fs/libfs.c 2007-09-05 01:52:34.000000000 -0700 @@ -341,10 +341,10 @@ int simple_prepare_write(struct file *fi unsigned from, unsigned to) { if (!PageUptodate(page)) { - if (to - from != page_cache_size(file->f_mapping)) + if (to - from != page_cache_page_size(page)) zero_user_segments(page, 0, from, - to, page_cache_size(file->f_mapping)); + to, page_cache_page_size(page)); } return 0; } --