[RFC 3/8] Flushing and zeroing higher order page cache pages

From: Christoph Lameter
Date: Thu Apr 19 2007 - 12:36:57 EST


---
include/linux/pagemap.h | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Index: linux-2.6.21-rc7/include/linux/pagemap.h
===================================================================
--- linux-2.6.21-rc7.orig/include/linux/pagemap.h 2007-04-18 22:08:36.000000000 -0700
+++ linux-2.6.21-rc7/include/linux/pagemap.h 2007-04-18 22:09:13.000000000 -0700
@@ -210,6 +210,33 @@ static inline void wait_on_page_writebac

extern void end_page_writeback(struct page *page);

+/* Support for clearing higher order pages */
+static inline void clear_mapping_page(struct address_space *a,
+ struct page *page)
+{
+ int nr_pages = 1 << a->order;
+ int i;
+
+ for (i = 0; i < nr_pages; i++)
+ clear_highpage(page + i);
+}
+
+/*
+ * Support for flushing higher order pages.
+ *
+ * A bit stupid: On many platforms flushing the first page
+ * will flush any TLB starting there
+ */
+static inline void flush_mapping_page(struct address_space *a,
+ struct page *page)
+{
+ int nr_pages = 1 << a->order;
+ int i;
+
+ for (i = 0; i < nr_pages; i++)
+ flush_dcache_page(page + i);
+}
+
/*
* Fault a userspace page into pagetables. Return non-zero on a fault.
*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/