Re: [PATCH] radix-tree pagecache for 2.4.19-pre5-ac3

From: William Lee Irwin III (wli@holomorphy.com)
Date: Wed Apr 10 2002 - 15:59:47 EST


On Sun, Apr 07, 2002 at 11:44:39AM -0500, Art Haas wrote:
> Once again the patch has been re-diffed for the latest -ac
> kernel. It's running on my machine now. Enjoy!
> I'm interested in hearing back from anyone using this
> patch - I'd like to be sure that it applies cleanly (I
> believe it does), and that the kernel built with the
> patch runs well. The -ac kernels with rmap and the O(1)
> scheduler are working well for me, and I'm hoping that
> this patch adds to those kernels. At some point I'm hoping
> the patch is included in to the -ac patchset, and the
> eventual inclusion into the standard kernel release.
> My thanks to everyone working on the kernel.

Thank you! This has saved me some effort.

Burning question:
What are the hunks changing arch/i386/kernel/setup.c there for?
Also, there appears to be a livelock in add_to_swap(), (yes, this
has killed my boxen dead) something to help with this follows.
(It at least turned up a different problem I'm still working on.)

Cheers,
Bill

diff -urN linux-virgin/mm/swap_state.c linux/mm/swap_state.c
--- linux-virgin/mm/swap_state.c Tue Apr 9 18:50:48 2002
+++ linux/mm/swap_state.c Tue Apr 9 21:28:15 2002
@@ -104,6 +104,7 @@
  */
 int add_to_swap(struct page * page)
 {
+ int error;
         swp_entry_t entry;
 
         if (!PageLocked(page))
@@ -118,11 +119,15 @@
                  * (adding to the page cache will clear the dirty
                  * and uptodate bits, so we need to do it again)
                  */
- if (add_to_swap_cache(page, entry) == 0) {
+ error = add_to_swap_cache(page, entry);
+ if (!error) {
                         SetPageUptodate(page);
                         set_page_dirty(page);
                         swap_free(entry);
                         return 1;
+ } else if (error = -ENOMEM) {
+ swap_free(entry);
+ return 0;
                 }
                 /* Raced with "speculative" read_swap_cache_async */
                 swap_free(entry);
-
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 : Mon Apr 15 2002 - 22:00:17 EST