[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-stable] [PATCH] virtio-balloon: free pbp more aggressively
From: |
David Hildenbrand |
Subject: |
Re: [Qemu-stable] [PATCH] virtio-balloon: free pbp more aggressively |
Date: |
Thu, 25 Jul 2019 14:13:47 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 |
> -static void virtio_balloon_pbp_free(PartiallyBalloonedPage *pbp)
> +static void virtio_balloon_pbp_free(PartiallyBalloonedPage **pbp)
> {
> - if (!pbp) {
> + if (!*pbp) {
> return;
> }
> - g_free(pbp->bitmap);
> - g_free(pbp);
> + g_free(*pbp->bitmap);
This has to be
g_free((*pbp)->bitmap);
to compile.
> + g_free(*pbp);
> + *pbp = NULL;
> }
>
> static PartiallyBalloonedPage *virtio_balloon_pbp_alloc(ram_addr_t base_gpa,
> @@ -108,8 +109,7 @@ static void balloon_inflate_page(VirtIOBalloon *balloon,
> /* We've partially ballooned part of a host page, but now
> * we're trying to balloon part of a different one. Too hard,
> * give up on the old partial page */
> - virtio_balloon_pbp_free(*pbp);
> - *pbp = NULL;
> + virtio_balloon_pbp_free(pbp);
> }
>
> if (!*pbp) {
> @@ -127,8 +127,7 @@ static void balloon_inflate_page(VirtIOBalloon *balloon,
> /* We ignore errors from ram_block_discard_range(), because it
> * has already reported them, and failing to discard a balloon
> * page is not fatal */
> - virtio_balloon_pbp_free(*pbp);
> - *pbp = NULL;
> + virtio_balloon_pbp_free(pbp);
> }
> }
>
> @@ -379,9 +378,8 @@ static void virtio_balloon_handle_output(VirtIODevice
> *vdev, VirtQueue *vq)
> virtqueue_push(vq, elem, offset);
> virtio_notify(vdev, vq);
> g_free(elem);
> + virtio_balloon_pbp_free(&pbp);
You could move the "PartiallyBalloonedPage *pbp = NULL;" now into the loop.
> }
> -
> - virtio_balloon_pbp_free(pbp);
> }
>
> static void virtio_balloon_receive_stats(VirtIODevice *vdev, VirtQueue *vq)
>
Gave it a quick test with a hugepage backing on x86 - still works. Would
be good if somebody could test with 64k PPC guest.
Reviewed-by: David Hildenbrand <address@hidden>
--
Thanks,
David / dhildenb