Re: [PATCH 2/2] virtio_balloon: fix shrinker_scan return units

From: Michael S. Tsirkin
Date: Mon Nov 18 2019 - 17:56:33 EST


On Mon, Nov 18, 2019 at 01:38:11PM -0800, Khazhismel Kumykov wrote:
> We were returning number of virtio balloon pages, which may not be the
> same as number of system pages
>
> Fixes: 86a559787e6f ("virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT")
> Cc: Wei Wang <wei.w.wang@xxxxxxxxx>
> Signed-off-by: Khazhismel Kumykov <khazhy@xxxxxxxxxx>
> ---
> drivers/virtio/virtio_balloon.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
> index 7cf9540a40b8..7951ece3fe24 100644
> --- a/drivers/virtio/virtio_balloon.c
> +++ b/drivers/virtio/virtio_balloon.c
> @@ -802,11 +802,11 @@ static unsigned long virtio_balloon_shrinker_scan(struct shrinker *shrinker,
> pages_freed = shrink_free_pages(vb, pages_to_free);
>
> if (pages_freed >= pages_to_free)
> - return pages_freed;
> + return pages_freed / VIRTIO_BALLOON_PAGES_PER_PAGE;
>

I'm no seeing why is this one right. shrink_free_pages gives result
in PAGE_SIZE units, right?

> pages_freed += shrink_balloon_pages(vb, pages_to_free - pages_freed);
>
> - return pages_freed;
> + return pages_freed / VIRTIO_BALLOON_PAGES_PER_PAGE;


My head hurts. Isn't this what patch 1 tweaked?



> }
>
> static unsigned long virtio_balloon_shrinker_count(struct shrinker *shrinker,
> --
> 2.24.0.432.g9d3f5f5b63-goog