virtio_balloon: do not change memory amount visible via /proc/meminfo
[cascardo/linux.git] / drivers / virtio / virtio_balloon.c
index 8543c9a..7efc329 100644 (file)
@@ -157,7 +157,9 @@ static void fill_balloon(struct virtio_balloon *vb, size_t num)
                }
                set_page_pfns(vb->pfns + vb->num_pfns, page);
                vb->num_pages += VIRTIO_BALLOON_PAGES_PER_PAGE;
-               adjust_managed_page_count(page, -1);
+               if (!virtio_has_feature(vb->vdev,
+                                       VIRTIO_BALLOON_F_DEFLATE_ON_OOM))
+                       adjust_managed_page_count(page, -1);
        }
 
        /* Did we get any? */
@@ -173,7 +175,9 @@ static void release_pages_balloon(struct virtio_balloon *vb)
        /* Find pfns pointing at start of each page, get pages and free them. */
        for (i = 0; i < vb->num_pfns; i += VIRTIO_BALLOON_PAGES_PER_PAGE) {
                struct page *page = balloon_pfn_to_page(vb->pfns[i]);
-               adjust_managed_page_count(page, 1);
+               if (!virtio_has_feature(vb->vdev,
+                                       VIRTIO_BALLOON_F_DEFLATE_ON_OOM))
+                       adjust_managed_page_count(page, 1);
                put_page(page); /* balloon reference */
        }
 }