From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Mason Subject: Re: [rfc][patch 2/2] buffer, btrfs: fix page_mkwrite error cases Date: Tue, 03 Mar 2009 09:26:03 -0500 Message-ID: <1236090363.782.6.camel@think.oraclecorp.com> References: <20090303103838.GC17042@wotan.suse.de> <20090303104114.GD17042@wotan.suse.de> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: Linux Memory Management List , linux-fsdevel@vger.kernel.org To: Nick Piggin Return-path: Received: from acsinet12.oracle.com ([141.146.126.234]:44219 "EHLO acsinet12.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751206AbZCCO0Q (ORCPT ); Tue, 3 Mar 2009 09:26:16 -0500 In-Reply-To: <20090303104114.GD17042@wotan.suse.de> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Tue, 2009-03-03 at 11:41 +0100, Nick Piggin wrote: > page_mkwrite is called with neither the page lock nor the ptl held. This > means a page can be concurrently truncated or invalidated out from underneath > it. Callers are supposed to prevent truncate races themselves, however > previously the only thing they can do in case they hit one is to raise a > SIGBUS. A sigbus is wrong for the case that the page has been invalidated > or truncated within i_size (eg. hole punched). Callers may also have to > perform memory allocations in this path, where again, SIGBUS would be wrong. > > The previous patch made it possible to properly specify errors. Convert > the generic buffer.c code and btrfs to return sane error values > (in the case of page removed from pagecache, VM_FAULT_NOPAGE will cause the > fault handler to exit without doing anything, and the fault will be retried > properly). > Thanks Nick. I think the btrfs patch needs an extra } to compile, but it looks fine. -chris