From: OGAWA Hirofumi Subject: Re: [PATCH] vfs: Fix vmtruncate() regression Date: Wed, 13 Jan 2010 21:07:59 +0900 Message-ID: <87r5pucin4.fsf@devron.myhome.or.jp> References: <876378jxhx.fsf@devron.myhome.or.jp> <20100113060734.GC3901@nick> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Al Viro , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org To: Nick Piggin Return-path: In-Reply-To: <20100113060734.GC3901@nick> (Nick Piggin's message of "Wed, 13 Jan 2010 17:07:34 +1100") Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Nick Piggin writes: >> If __block_prepare_write() was failed in block_write_begin(), the >> allocated blocks can be outside of ->i_size. >> >> But new truncate_pagecache() in vmtuncate() does nothing if new < old. >> It means the above usage is not working anymore. >> >> So, this patch fixes it by removing "new < old" check. It would need >> more cleanup/change. But, now -rc and truncate working is in progress, >> so, this tried to fix it minimum change. >> >> Cc: stable@kernel.org >> Signed-off-by: OGAWA Hirofumi > > Hmm, truncate_pagecache() is for truncating the mm/vm part of the > pagecache. vmtruncate should still call inode->i_op->truncate() to > trim blocks if required. > > However I'd say we do still need to ensure do_invalidatepage is > called for the page, for private metadata. So yes I think your patch > looks good. Thanks for reviewing. Yes, and it also needs to be called to ensure that have the same state on-disk and page/bh state. [BTW, this became the cause of fatfs corruption.] Thanks. -- OGAWA Hirofumi