On Mon, 19 May 2014 08:41:21 +0200 Ján Tomko <jto...@redhat.com> wrote:
> If the guest hasn't updated the stats yet, instead of returning > an error, return '-1' for the stats and '0' as 'last-update'. > > This lets applications ignore this without parsing the error message. > > Related libvirt patch and discussion: > https://www.redhat.com/archives/libvir-list/2014-May/msg00460.html > > Signed-off-by: Ján Tomko <jto...@redhat.com> > --- > hw/virtio/virtio-balloon.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c > index 971a921..6661c53 100644 > --- a/hw/virtio/virtio-balloon.c > +++ b/hw/virtio/virtio-balloon.c > @@ -111,11 +111,6 @@ static void balloon_stats_get_all(Object *obj, struct > Visitor *v, > VirtIOBalloon *s = opaque; > int i; > > - if (!s->stats_last_update) { > - error_setg(errp, "guest hasn't updated any stats yet"); > - return; > - } > - > visit_start_struct(v, NULL, "guest-stats", name, 0, errp); > visit_type_int(v, &s->stats_last_update, "last-update", errp); > > @@ -361,6 +356,8 @@ static void virtio_balloon_device_realize(DeviceState > *dev, Error **errp) > s->dvq = virtio_add_queue(vdev, 128, virtio_balloon_handle_output); > s->svq = virtio_add_queue(vdev, 128, virtio_balloon_receive_stats); > > + reset_stats(s); > + > register_savevm(dev, "virtio-balloon", -1, 1, > virtio_balloon_save, virtio_balloon_load, s); > Looks good to me, but I have some comments: - I'm assuming you tested this against libivrt, right? It's good to add a comment in the changelog mentioning that - You have to update the documentation in docs/virtio-balloon-stats.txt as well. There are two sections to update, the one describing the last-update key (where you should mention what it means when last-update=0) and the section saying that polling can be enabled even when the guest doesn't have stats support (I'd mention that last-update=0 for that case) - Please, rebase on top of latest master