On Thu, 7 Feb 2002, David S. Miller wrote:
> From: Rik van Riel <riel@conectiva.com.br>
> Date: Thu, 7 Feb 2002 10:34:20 -0200 (BRST)
>
> Actually, at this point we _know_ page->list.{prev,next} are
> NULL.
>
> We can use this to add the pages to a special list, from where
> __alloc_pages() and kswapd can move them to the free list, in
> process context.
>
> I don't think there should be any special logic on how to free a page
> outside of the page allocator itself. Certainly this kind of stuff
> doesn't belong in the networking.
>
> Pages can be freed from arbitrary contexts, and the page allocator
> should be the part the knows how to deal with it.
>
> Maybe I don't understand and you're really suggesting something else.
The mechanism to do what I described above should of course be
in __free_pages_ok().
if (PageLRU(page)) {
if (in_interrupt()) {
add_page_to_special_list(page);
return;
} else
lru_cache_del(page);
}
Rik
-- "Linux holds advantages over the single-vendor commercial OS" -- Microsoft's "Competing with Linux" documenthttp://www.surriel.com/ http://distro.conectiva.com/
- 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 Feb 07 2002 - 21:01:01 EST