From mboxrd@z Thu Jan 1 00:00:00 1970 From: Namhyung Kim Subject: [PATCH UPDATED] fs/buffer.c: call __block_write_begin() if we have page Date: Sun, 24 Oct 2010 01:11:54 +0900 Message-ID: <1287850314-13663-1-git-send-email-namhyung@gmail.com> References: <1287848786-13347-1-git-send-email-namhyung@gmail.com> Cc: Christoph Hellwig , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org To: Alexander Viro Return-path: In-Reply-To: <1287848786-13347-1-git-send-email-namhyung@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org If we have the appropriate page already, call __block_write_begin() directly instead of releasing and regrabbing it inside of block_write_begin(). Signed-off-by: Namhyung Kim --- Fix error path. fs/buffer.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index 7f0b9b0..f5755f7 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2466,11 +2466,13 @@ int nobh_write_begin(struct address_space *mapping, *fsdata = NULL; if (page_has_buffers(page)) { - unlock_page(page); - page_cache_release(page); - *pagep = NULL; - return block_write_begin(mapping, pos, len, flags, pagep, - get_block); + ret = __block_write_begin(page, pos, len, get_block); + if (unlikely(ret)) { + unlock_page(page); + page_cache_release(page); + *pagep = NULL; + } + return ret; } if (PageMappedToDisk(page)) -- 1.7.0.4