Message ID | 2d651cbdf1c629fef76704ec2d732d534bc98e35.1400481675.git.jtomko@redhat.com |
---|---|
State | New |
Headers | show |
On 05/19/2014 12:41 AM, Ján Tomko 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 <jtomko@redhat.com> > --- > hw/virtio/virtio-balloon.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) Reviewed-by: Eric Blake <eblake@redhat.com>
On Mon, 19 May 2014 08:41:21 +0200 Ján Tomko <jtomko@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 <jtomko@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
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);
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 <jtomko@redhat.com> --- hw/virtio/virtio-balloon.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)