From 5fd04aed3e1edb90d41c51ad8860af34be6d8b6c Mon Sep 17 00:00:00 2001 From: Anton Altaparmakov Date: Thu, 23 Jun 2005 00:10:21 -0700 Subject: [PATCH] --- yaml --- r: 2981 b: refs/heads/master c: 152becd26e0563aefdbc4fd1fe491928efe92d1f h: refs/heads/master i: 2979: 52a82c72aa871d445419e3f47165aa5f3af1f3ee v: v3 --- [refs] | 2 +- trunk/fs/buffer.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index bc422379746a..e1e916dd4923 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9a59f452abe11f569e13ec16c51e6d61c54b9838 +refs/heads/master: 152becd26e0563aefdbc4fd1fe491928efe92d1f diff --git a/trunk/fs/buffer.c b/trunk/fs/buffer.c index 12bdb2791127..13e5938a64f6 100644 --- a/trunk/fs/buffer.c +++ b/trunk/fs/buffer.c @@ -1926,7 +1926,6 @@ static int __block_prepare_write(struct inode *inode, struct page *page, if (err) break; if (buffer_new(bh)) { - clear_buffer_new(bh); unmap_underlying_metadata(bh->b_bdev, bh->b_blocknr); if (PageUptodate(page)) { @@ -1968,9 +1967,14 @@ static int __block_prepare_write(struct inode *inode, struct page *page, if (!buffer_uptodate(*wait_bh)) err = -EIO; } - if (!err) - return err; - + if (!err) { + bh = head; + do { + if (buffer_new(bh)) + clear_buffer_new(bh); + } while ((bh = bh->b_this_page) != head); + return 0; + } /* Error case: */ /* * Zero out any newly allocated blocks to avoid exposing stale