Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 363171
b: refs/heads/master
c: f766dc1
h: refs/heads/master
i:
  363169: 2314c58
  363167: 0a24984
v: v3
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed Mar 29, 2013
1 parent 6c88bbe commit 807bf8c
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5853ff23c2f0f6c87a859e7f882eac3300b329a0
refs/heads/master: f766dc1ea576fcdfbf2bc5638757ddbdacfb5a69
18 changes: 16 additions & 2 deletions trunk/drivers/hv/hv_balloon.c
Original file line number Diff line number Diff line change
Expand Up @@ -1004,6 +1004,14 @@ static int alloc_balloon_pages(struct hv_dynmem_device *dm, int num_pages,

dm->num_pages_ballooned += alloc_unit;

/*
* If we allocatted 2M pages; split them so we
* can free them in any order we get.
*/

if (alloc_unit != 1)
split_page(pg, get_order(alloc_unit << PAGE_SHIFT));

bl_resp->range_count++;
bl_resp->range_array[i].finfo.start_page =
page_to_pfn(pg);
Expand All @@ -1030,9 +1038,10 @@ static void balloon_up(struct work_struct *dummy)


/*
* Currently, we only support 4k allocations.
* We will attempt 2M allocations. However, if we fail to
* allocate 2M chunks, we will go back to 4k allocations.
*/
alloc_unit = 1;
alloc_unit = 512;

while (!done) {
bl_resp = (struct dm_balloon_response *)send_buffer;
Expand All @@ -1048,6 +1057,11 @@ static void balloon_up(struct work_struct *dummy)
bl_resp, alloc_unit,
&alloc_error);

if ((alloc_error) && (alloc_unit != 1)) {
alloc_unit = 1;
continue;
}

if ((alloc_error) || (num_ballooned == num_pages)) {
bl_resp->more_pages = 0;
done = true;
Expand Down

0 comments on commit 807bf8c

Please sign in to comment.