Commit 3d65c948 authored by Gianluca Guida's avatar Gianluca Guida Committed by Jeremy Fitzhardinge

Xen balloon: fix totalram_pages counting.

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: default avatarGianluca Guida <gianluca.guida@citrix.com>
Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Stable Kernel <stable@kernel.org>
parent b4606f21
...@@ -136,6 +136,8 @@ static void balloon_append(struct page *page) ...@@ -136,6 +136,8 @@ static void balloon_append(struct page *page)
list_add(&page->lru, &ballooned_pages); list_add(&page->lru, &ballooned_pages);
balloon_stats.balloon_low++; balloon_stats.balloon_low++;
} }
totalram_pages--;
} }
/* balloon_retrieve: rescue a page from the balloon, if it is not empty. */ /* balloon_retrieve: rescue a page from the balloon, if it is not empty. */
...@@ -156,6 +158,8 @@ static struct page *balloon_retrieve(void) ...@@ -156,6 +158,8 @@ static struct page *balloon_retrieve(void)
else else
balloon_stats.balloon_low--; balloon_stats.balloon_low--;
totalram_pages++;
return page; return page;
} }
...@@ -260,7 +264,6 @@ static int increase_reservation(unsigned long nr_pages) ...@@ -260,7 +264,6 @@ static int increase_reservation(unsigned long nr_pages)
} }
balloon_stats.current_pages += nr_pages; balloon_stats.current_pages += nr_pages;
totalram_pages = balloon_stats.current_pages;
out: out:
spin_unlock_irqrestore(&balloon_lock, flags); spin_unlock_irqrestore(&balloon_lock, flags);
...@@ -323,7 +326,6 @@ static int decrease_reservation(unsigned long nr_pages) ...@@ -323,7 +326,6 @@ static int decrease_reservation(unsigned long nr_pages)
BUG_ON(ret != nr_pages); BUG_ON(ret != nr_pages);
balloon_stats.current_pages -= nr_pages; balloon_stats.current_pages -= nr_pages;
totalram_pages = balloon_stats.current_pages;
spin_unlock_irqrestore(&balloon_lock, flags); spin_unlock_irqrestore(&balloon_lock, flags);
...@@ -422,7 +424,6 @@ static int __init balloon_init(void) ...@@ -422,7 +424,6 @@ static int __init balloon_init(void)
pr_info("xen_balloon: Initialising balloon driver.\n"); pr_info("xen_balloon: Initialising balloon driver.\n");
balloon_stats.current_pages = min(xen_start_info->nr_pages, max_pfn); 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.target_pages = balloon_stats.current_pages;
balloon_stats.balloon_low = 0; balloon_stats.balloon_low = 0;
balloon_stats.balloon_high = 0; balloon_stats.balloon_high = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment