Commit 709613ad authored by Ross Lagerwall's avatar Ross Lagerwall Committed by Juergen Gross

xen/balloon: Only mark a page as managed when it is released

Only mark a page as managed when it is released back to the allocator.
This ensures that the managed page count does not get falsely increased
when a VM is running. Correspondingly change it so that pages are
marked as unmanaged after getting them from the allocator.
Signed-off-by: default avatarRoss Lagerwall <ross.lagerwall@citrix.com>
Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
parent 581d21a2
...@@ -180,7 +180,6 @@ static void __balloon_append(struct page *page) ...@@ -180,7 +180,6 @@ static void __balloon_append(struct page *page)
static void balloon_append(struct page *page) static void balloon_append(struct page *page)
{ {
__balloon_append(page); __balloon_append(page);
adjust_managed_page_count(page, -1);
} }
/* 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. */
...@@ -201,8 +200,6 @@ static struct page *balloon_retrieve(bool require_lowmem) ...@@ -201,8 +200,6 @@ static struct page *balloon_retrieve(bool require_lowmem)
else else
balloon_stats.balloon_low--; balloon_stats.balloon_low--;
adjust_managed_page_count(page, 1);
return page; return page;
} }
...@@ -478,7 +475,7 @@ static enum bp_state increase_reservation(unsigned long nr_pages) ...@@ -478,7 +475,7 @@ static enum bp_state increase_reservation(unsigned long nr_pages)
#endif #endif
/* Relinquish the page back to the allocator. */ /* Relinquish the page back to the allocator. */
__free_reserved_page(page); free_reserved_page(page);
} }
balloon_stats.current_pages += rc; balloon_stats.current_pages += rc;
...@@ -509,6 +506,7 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp) ...@@ -509,6 +506,7 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)
state = BP_EAGAIN; state = BP_EAGAIN;
break; break;
} }
adjust_managed_page_count(page, -1);
scrub_page(page); scrub_page(page);
list_add(&page->lru, &pages); list_add(&page->lru, &pages);
} }
......
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