xen/balloon: Move dec_totalhigh_pages() from __balloon_append() to balloon_append()
git commit 9be4d45759
(xen: add
extra pages to balloon) splited balloon_append() into two functions
(balloon_append() and __balloon_append()) and left decrementation
of totalram_pages counter in __balloon_append(). In this situation
if __balloon_append() is called on i386 with highmem page referenced
then totalhigh_pages is decremented, however, it should not. This
patch corrects that issue and moves dec_totalhigh_pages() from
__balloon_append() to balloon_append(). Now totalram_pages and
totalhigh_pages are decremented simultaneously only when
balloon_append() is called.
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Signed-off-by: Daniel Kiper <dkiper@net-space.pl>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
This commit is contained in:
Родитель
83be7e52d4
Коммит
09ca132a8e
|
@ -114,7 +114,6 @@ static void __balloon_append(struct page *page)
|
||||||
if (PageHighMem(page)) {
|
if (PageHighMem(page)) {
|
||||||
list_add_tail(&page->lru, &ballooned_pages);
|
list_add_tail(&page->lru, &ballooned_pages);
|
||||||
balloon_stats.balloon_high++;
|
balloon_stats.balloon_high++;
|
||||||
dec_totalhigh_pages();
|
|
||||||
} else {
|
} else {
|
||||||
list_add(&page->lru, &ballooned_pages);
|
list_add(&page->lru, &ballooned_pages);
|
||||||
balloon_stats.balloon_low++;
|
balloon_stats.balloon_low++;
|
||||||
|
@ -124,6 +123,8 @@ 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);
|
||||||
|
if (PageHighMem(page))
|
||||||
|
dec_totalhigh_pages();
|
||||||
totalram_pages--;
|
totalram_pages--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,7 +463,7 @@ static int __init balloon_init(void)
|
||||||
pfn < extra_pfn_end;
|
pfn < extra_pfn_end;
|
||||||
pfn++) {
|
pfn++) {
|
||||||
page = pfn_to_page(pfn);
|
page = pfn_to_page(pfn);
|
||||||
/* totalram_pages doesn't include the boot-time
|
/* totalram_pages and totalhigh_pages do not include the boot-time
|
||||||
balloon extension, so don't subtract from it. */
|
balloon extension, so don't subtract from it. */
|
||||||
__balloon_append(page);
|
__balloon_append(page);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче