From: npiggin@suse.de
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Mikulas Patocka <mpatocka@redhat.com>,
linux-mm@kvack.org, linux-fsdevel@vger.kernel.org
Subject: [patch 8/8] mm: write_cache_pages terminate quickly
Date: Fri, 10 Oct 2008 02:50:47 +1100 [thread overview]
Message-ID: <20081009174822.952978460@suse.de> (raw)
In-Reply-To: 20081009155039.139856823@suse.de
[-- Attachment #1: mm-wcp-terminate-quickly.patch --]
[-- Type: text/plain, Size: 1527 bytes --]
Terminate the write_cache_pages loop upon encountering the first page past
end, without locking the page. Pages cannot have their index change when we
have a reference on them (truncate, eg truncate_inode_pages_range performs
the same check without the page lock).
Signed-off-by: Nick Piggin <npiggin@suse.de>
---
Index: linux-2.6/mm/page-writeback.c
===================================================================
--- linux-2.6.orig/mm/page-writeback.c
+++ linux-2.6/mm/page-writeback.c
@@ -913,12 +913,18 @@ retry:
struct page *page = pvec.pages[i];
/*
- * At this point we hold neither mapping->tree_lock nor
- * lock on the page itself: the page may be truncated or
- * invalidated (changing page->mapping to NULL), or even
- * swizzled back from swapper_space to tmpfs file
- * mapping
+ * At this point, the page may be truncated or
+ * invalidated (changing page->mapping to NULL), or
+ * even swizzled back from swapper_space to tmpfs file
+ * mapping. However, page->index will not change
+ * because we have a reference on the page.
*/
+ if (page->index > end) {
+ /* Can't be range_cyclic: end == -1 there */
+ done = 1;
+ break;
+ }
+
again:
lock_page(page);
@@ -936,12 +942,6 @@ continue_unlock:
continue;
}
- if (page->index > end) {
- /* Can't be range_cyclic: end == -1 there */
- done = 1;
- goto continue_unlock;
- }
-
if (!PageDirty(page)) {
/* someone wrote it for us */
goto continue_unlock;
--
prev parent reply other threads:[~2008-10-09 7:58 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-09 15:50 [patch 0/8] write_cache_pages fixes npiggin
2008-10-09 15:50 ` [patch 1/8] mm: write_cache_pages cyclic fix npiggin
2008-10-09 15:50 ` [patch 2/8] mm: write_cache_pages AOP_WRITEPAGE_ACTIVATE fix npiggin
2008-10-10 16:00 ` Miklos Szeredi
2008-10-10 18:29 ` Hugh Dickins
2008-10-11 4:05 ` Nick Piggin
2008-10-09 15:50 ` [patch 3/8] mm: write_cache_pages writepage error fix npiggin
2008-10-09 15:50 ` [patch 4/8] mm: write_cache_pages type overflow fix npiggin
2008-10-09 8:23 ` Christoph Hellwig
2008-10-09 8:33 ` Nick Piggin
2008-10-10 13:10 ` Theodore Tso
2008-10-10 13:13 ` Christoph Hellwig
2008-10-10 13:37 ` Theodore Tso
2008-10-10 13:48 ` Steven Whitehouse
2008-10-10 14:05 ` Theodore Tso
2008-10-10 14:08 ` Christoph Hellwig
2008-10-10 15:54 ` Aneesh Kumar K.V
2008-10-10 15:59 ` Chris Mason
2008-10-10 16:10 ` Theodore Tso
2008-10-10 16:34 ` Christoph Hellwig
2008-10-10 13:56 ` Chris Mason
2008-10-09 15:50 ` [patch 5/8] mm: write_cache_pages integrity fix npiggin
2008-10-09 12:52 ` Chris Mason
2008-10-09 13:27 ` Nick Piggin
2008-10-09 13:35 ` Chris Mason
2008-10-09 13:55 ` Nick Piggin
2008-10-09 14:12 ` Chris Mason
2008-10-09 14:21 ` Nick Piggin
2008-10-09 14:39 ` Chris Mason
2008-10-09 14:50 ` Nick Piggin
2008-10-09 15:16 ` Chris Mason
2008-10-10 2:40 ` Nick Piggin
2008-10-09 15:50 ` [patch 6/8] mm: write_cache_pages cleanups npiggin
2008-10-09 14:37 ` Artem Bityutskiy
2008-10-09 15:50 ` [patch 7/8] mm: write_cache_pages optimise page cleaning npiggin
2008-10-09 15:50 ` npiggin [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081009174822.952978460@suse.de \
--to=npiggin@suse.de \
--cc=akpm@linux-foundation.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mpatocka@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).