2.2.15pre4 VM fix

From: Rik van Riel (riel@nl.linux.org)
Date: Tue Jan 25 2000 - 19:20:48 EST


Hi Alan,

with the attached patch I hope to have fixed the 2.2.15pre4
VM problems. I didn't manage to break it myself, but maybe
one of the dear readers has a machine where they are able
to do so...

Please give this patch (against 2.2.15pre4) a solid beating
and report back to us. Thanks all!

regards,

Rik

--
The Internet is not a network of computers. It is a network
of people. That is its real strength.

--- mm/page_alloc.c.orig Tue Jan 25 00:01:43 2000 +++ mm/page_alloc.c Wed Jan 26 01:16:21 2000 @@ -210,6 +210,12 @@ */ if (!(current->flags & PF_MEMALLOC)) { int freed; + if (current->state != TASK_RUNNING && (gfp_mask & __GFP_WAIT)) { + printk("gfp called by non-running (%d) task from %p!\n", + current->state, __builtin_return_address(0)); + /* if we're not running, we can't sleep */ + gfp_mask &= ~__GFP_WAIT; + } if (nr_free_pages <= freepages.low) { wake_up_interruptible(&kswapd_wait); @@ -224,6 +230,9 @@ current->flags |= PF_MEMALLOC; freed = try_to_free_pages(gfp_mask); current->flags &= ~PF_MEMALLOC; + + if ((gfp_mask & __GFP_MED) && nr_free_pages > freepages.min / 2) + goto ok_to_allocate; if (!freed && !(gfp_mask & __GFP_HIGH)) goto nopage;

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jan 31 2000 - 21:00:15 EST