On Sun, 24 Oct 2010 01:11:54 +0900 Namhyung Kim <namhyung@xxxxxxxxx> wrote: > 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 <namhyung@xxxxxxxxx> > --- > 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)) It looks OK. Was it tested? (ext2 mounted with -o nobh) -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html