[097/151] Xen balloon: fix totalram_pages counting.

From: Greg KH
Date: Wed Dec 16 2009 - 23:26:42 EST


2.6.32-stable review patch. If anyone has any objections, please let us know.

------------------

From: Gianluca Guida <gianluca.guida@xxxxxxxxxx>

commit 3d65c9488cadd2f11bd4d60c7266e639ece5d0d6 upstream.

Change totalram_pages when a single page is added/removed to the
ballooned list. This avoid totalram_pages to be set erroneously to
max_pfn at boot.

Signed-off-by: Gianluca Guida <gianluca.guida@xxxxxxxxxx>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>

---
drivers/xen/balloon.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -136,6 +136,8 @@ static void balloon_append(struct page *
list_add(&page->lru, &ballooned_pages);
balloon_stats.balloon_low++;
}
+
+ totalram_pages--;
}

/* balloon_retrieve: rescue a page from the balloon, if it is not empty. */
@@ -156,6 +158,8 @@ static struct page *balloon_retrieve(voi
else
balloon_stats.balloon_low--;

+ totalram_pages++;
+
return page;
}

@@ -260,7 +264,6 @@ static int increase_reservation(unsigned
}

balloon_stats.current_pages += nr_pages;
- totalram_pages = balloon_stats.current_pages;

out:
spin_unlock_irqrestore(&balloon_lock, flags);
@@ -323,7 +326,6 @@ static int decrease_reservation(unsigned
BUG_ON(ret != nr_pages);

balloon_stats.current_pages -= nr_pages;
- totalram_pages = balloon_stats.current_pages;

spin_unlock_irqrestore(&balloon_lock, flags);

@@ -422,7 +424,6 @@ static int __init balloon_init(void)
pr_info("xen_balloon: Initialising balloon driver.\n");

balloon_stats.current_pages = min(xen_start_info->nr_pages, max_pfn);
- totalram_pages = balloon_stats.current_pages;
balloon_stats.target_pages = balloon_stats.current_pages;
balloon_stats.balloon_low = 0;
balloon_stats.balloon_high = 0;


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