[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20070210001906.21921.45798.sendpatchset@linux.site>
Date: Sat, 10 Feb 2007 03:31:44 +0100 (CET)
From: Nick Piggin <npiggin@...e.de>
To: Andrew Morton <akpm@...l.org>
Cc: Hugh Dickins <hugh@...itas.com>, Nick Piggin <npiggin@...e.de>,
Linux Memory Management <linux-mm@...ck.org>,
Martin Schwidefsky <schwidefsky@...ibm.com>,
Linux Kernel <linux-kernel@...r.kernel.org>
Subject: [patch 2/3] fs: buffer don't PageUptodate without page locked
__block_write_full_page is calling SetPageUptodate without the page locked.
This is unusual, but not incorrect, as PG_writeback is still set.
However the next patch will require that SetPageUptodate always be called
with the page locked. Simply don't bother setting the page uptodate in this
case (it is unusual that the write path does such a thing anyway). Instead
just leave it to the read side to bring the page uptodate when it notices
that all buffers are uptodate.
Signed-off-by: Nick Piggin <npiggin@...e.de>
fs/buffer.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
Index: linux-2.6/fs/buffer.c
===================================================================
--- linux-2.6.orig/fs/buffer.c
+++ linux-2.6/fs/buffer.c
@@ -1698,17 +1698,8 @@ done:
* clean. Someone wrote them back by hand with
* ll_rw_block/submit_bh. A rare case.
*/
- int uptodate = 1;
- do {
- if (!buffer_uptodate(bh)) {
- uptodate = 0;
- break;
- }
- bh = bh->b_this_page;
- } while (bh != head);
- if (uptodate)
- SetPageUptodate(page);
end_page_writeback(page);
+
/*
* The page and buffer_heads can be released at any time from
* here on.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists