mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Wu Fengguang <wfg@mail.ustc.edu.cn>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, Wu Fengguang <wfg@mail.ustc.edu.cn>
Subject: [PATCH 21/23] readahead: debug radix tree new functions
Date: Sun, 19 Mar 2006 10:34:34 +0800	[thread overview]
Message-ID: <20060319023459.086278000@localhost.localdomain> (raw)
In-Reply-To: <20060319023413.305977000@localhost.localdomain>

[-- Attachment #1: readahead-debug-radix-tree.patch --]
[-- Type: text/plain, Size: 2114 bytes --]

Do some sanity checkings on the newly added radix tree code.

It is meant to be removed after a while.

Signed-off-by: Wu Fengguang <wfg@mail.ustc.edu.cn>
---

 mm/readahead.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+)

--- linux-2.6.16-rc6-mm2.orig/mm/readahead.c
+++ linux-2.6.16-rc6-mm2/mm/readahead.c
@@ -80,6 +80,8 @@ enum ra_class {
 #include <linux/debugfs.h>
 #include <linux/seq_file.h>
 
+#define DEBUG_READAHEAD_RADIXTREE
+
 /* Read-ahead events to be accounted. */
 enum ra_event {
 	RA_EVENT_CACHE_MISS,		/* read cache misses */
@@ -1515,6 +1517,13 @@ static unsigned long query_page_cache_se
 	read_lock_irq(&mapping->tree_lock);
 	index = radix_tree_scan_hole_backward(&mapping->page_tree,
 							offset, ra_max);
+#ifdef DEBUG_READAHEAD_RADIXTREE
+	WARN_ON(index > offset);
+	if (index != offset)
+		WARN_ON(!__find_page(mapping, index + 1));
+	if (index && offset - index < ra_max)
+		WARN_ON(__find_page(mapping, index));
+#endif
 	read_unlock_irq(&mapping->tree_lock);
 
 	*remain = offset - index;
@@ -1550,6 +1559,11 @@ static unsigned long query_page_cache_se
 		struct radix_tree_node *node;
 		node = radix_tree_cache_lookup_node(&mapping->page_tree,
 						&cache, offset - count, 1);
+#ifdef DEBUG_READAHEAD_RADIXTREE
+		if (node != radix_tree_lookup_node(&mapping->page_tree,
+							offset - count, 1))
+			BUG();
+#endif
 		if (!node)
 			break;
 	}
@@ -1614,6 +1628,16 @@ static inline pgoff_t find_segtail(struc
 	cond_resched();
 	read_lock_irq(&mapping->tree_lock);
 	ra_index = radix_tree_scan_hole(&mapping->page_tree, index, max_scan);
+#ifdef DEBUG_READAHEAD_RADIXTREE
+	BUG_ON(!__find_page(mapping, index));
+	WARN_ON(ra_index < index);
+	if (ra_index != index && !__find_page(mapping, ra_index - 1))
+		printk(KERN_ERR "radix_tree_scan_hole(index=%lu ra_index=%lu "
+				"max_scan=%lu nrpages=%lu) fooled!\n",
+				index, ra_index, max_scan, mapping->nrpages);
+	if (ra_index != ~0UL && ra_index - index < max_scan)
+		WARN_ON(__find_page(mapping, ra_index));
+#endif
 	read_unlock_irq(&mapping->tree_lock);
 
 	if (ra_index <= index + max_scan)

--

  parent reply	other threads:[~2006-03-19  2:35 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-19  2:34 [PATCH 00/23] Adaptive read-ahead V11 Wu Fengguang
2006-03-19  2:34 ` [PATCH 01/23] readahead: kconfig options Wu Fengguang
2006-03-19  2:34 ` [PATCH 02/23] radixtree: look-aside cache Wu Fengguang
2006-03-20 16:01   ` Christoph Lameter
2006-03-21  2:19     ` Wu Fengguang
2006-03-19  2:34 ` [PATCH 03/23] radixtree: hole scanning functions Wu Fengguang
2006-03-19  2:34 ` [PATCH 04/23] readahead: page flag PG_readahead Wu Fengguang
2006-03-19  2:34 ` [PATCH 05/23] readahead: refactor do_generic_mapping_read() Wu Fengguang
2006-03-19  2:34 ` [PATCH 06/23] readahead: refactor __do_page_cache_readahead() Wu Fengguang
2006-03-19  2:34 ` [PATCH 07/23] readahead: insert cond_resched() calls Wu Fengguang
2006-03-19  3:50   ` Lee Revell
2006-03-19  5:32     ` Wu Fengguang
2006-03-20 13:31     ` Wu Fengguang
2006-03-19  2:34 ` [PATCH 08/23] readahead: common macros Wu Fengguang
2006-03-19  2:34 ` [PATCH 09/23] readahead: events accounting Wu Fengguang
2006-03-19  2:34 ` [PATCH 10/23] readahead: support functions Wu Fengguang
2006-03-19  2:34 ` [PATCH 11/23] readahead: sysctl parameters Wu Fengguang
2006-03-19  2:34 ` [PATCH 12/23] readahead: min/max sizes Wu Fengguang
2006-03-19  2:34 ` [PATCH 13/23] readahead: page cache aging accounting Wu Fengguang
2006-03-19  2:34 ` [PATCH 14/23] readahead: state based method Wu Fengguang
2006-03-19  2:34 ` [PATCH 15/23] readahead: context " Wu Fengguang
2006-03-19  2:34 ` [PATCH 16/23] readahead: other methods Wu Fengguang
2006-03-19  2:34 ` [PATCH 17/23] readahead: call scheme Wu Fengguang
2006-03-19  2:34 ` [PATCH 18/23] readahead: laptop mode Wu Fengguang
2006-03-19  2:34 ` [PATCH 19/23] readahead: loop case Wu Fengguang
2006-03-19  2:34 ` [PATCH 20/23] readahead: nfsd case Wu Fengguang
2006-03-19  2:34 ` Wu Fengguang [this message]
2006-03-19  2:34 ` [PATCH 22/23] readahead: debug traces showing accessed file names Wu Fengguang
2006-03-19  2:34 ` [PATCH 23/23] readahead: debug traces showing read patterns Wu Fengguang
2006-03-19  3:10 ` [PATCH 00/23] Adaptive read-ahead V11 Jon Smirl
2006-03-19  3:47   ` Wu Fengguang
2006-03-19  4:10     ` Jon Smirl
2006-03-19  5:09       ` Wu Fengguang
2006-03-19 15:53         ` Jon Smirl
2006-03-20 13:54           ` Wu Fengguang
2006-03-27 21:38   ` Matt Heler
2006-03-28  3:44     ` Wu Fengguang

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=20060319023459.086278000@localhost.localdomain \
    --to=wfg@mail.ustc.edu.cn \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    /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

all inboxes | Powered by JetHome®