[PATCH] ramdisk/VM fix

From: Philipp Rumpf (prumpf@mandrakesoft.com)
Date: Thu Mar 08 2001 - 13:25:36 EST


With the current rd.c code, we can get into a situation where there is
a buffer-only page for data which is also in a page cache page with
page->buffers != NULL. The current vmscan.c code never frees the page
cache page in this scenario, effectively doubling ramdisk memory
requirements.

Linus, I think this is a bugfix (tested against -ac kernels):

diff -ur linux/include/linux/swap.h linux-prumpf/include/linux/swap.h
--- linux/include/linux/swap.h Thu Mar 8 10:01:30 2001
+++ linux-prumpf/include/linux/swap.h Thu Mar 8 10:14:12 2001
@@ -284,7 +284,7 @@
 #endif
 
 #define page_ramdisk(page) \
- (page->buffers && (MAJOR(page->buffers->b_dev) == RAMDISK_MAJOR))
+ (page->buffers && (MAJOR(page->buffers->b_dev) == RAMDISK_MAJOR) && buffer_protected(page->buffers))
 
 extern spinlock_t swaplock;
 

I don't think I'm missing anything important ...
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Mar 15 2001 - 21:00:08 EST