Re: [PATCH 1/5] Swap Migration V4: LRU operations

From: Christoph Lameter
Date: Wed Oct 26 2005 - 11:46:49 EST


On Wed, 26 Oct 2005, Peter Zijlstra wrote:

> On Tue, 2005-10-25 at 12:30 -0700, Christoph Lameter wrote:
>
> > + if (rc == -1) { /* Not possible to isolate */
> > + list_del(&page->lru);
> > + list_add(&page->lru, src);
> > }
>
> Would the usage of list_move() not be simpler?

Hmmm. yes the whole section is a bit weird there (sorry Magnus). How
about this additional patch:

Index: linux-2.6.14-rc5-mm1/mm/vmscan.c
===================================================================
--- linux-2.6.14-rc5-mm1.orig/mm/vmscan.c 2005-10-25 08:09:52.000000000 -0700
+++ linux-2.6.14-rc5-mm1/mm/vmscan.c 2005-10-26 09:42:34.000000000 -0700
@@ -590,22 +590,22 @@ static int isolate_lru_pages(struct zone
{
struct page *page;
int scanned = 0;
- int rc;

while (scanned++ < nr_to_scan && !list_empty(src)) {
page = lru_to_page(src);
prefetchw_prev_lru_page(page, src, flags);

- rc = __isolate_lru_page(zone, page);
-
- BUG_ON(rc == 0); /* PageLRU(page) must be true */
-
- if (rc == 1) /* Succeeded to isolate page */
+ switch (__isolate_lru_page(zone, page)) {
+ case 1:
+ /* Succeeded to isolate page */
list_add(&page->lru, dst);
-
- if (rc == -1) { /* Not possible to isolate */
- list_del(&page->lru);
- list_add(&page->lru, src);
+ break;
+ case -1:
+ /* Not possible to isolate */
+ list_move(&page->lru, src);
+ break;
+ default:
+ BUG();
}
}

-
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/