On Wed, 18 Nov 2009 09:58:30 -0600 Anthony Liguori <aligu...@linux.vnet.ibm.com> wrote:
> Markus Armbruster wrote: > > Luiz Capitulino <lcapitul...@redhat.com> writes: > > > > > >> Signed-off-by: Luiz Capitulino <lcapitul...@redhat.com> > >> --- > >> monitor.c | 7 ++++--- > >> 1 files changed, 4 insertions(+), 3 deletions(-) > >> > >> diff --git a/monitor.c b/monitor.c > >> index 74abef9..e42434f 100644 > >> --- a/monitor.c > >> +++ b/monitor.c > >> @@ -1722,10 +1722,11 @@ static void do_info_balloon(Monitor *mon, QObject > >> **ret_data) > >> > >> actual = qemu_balloon_status(); > >> if (kvm_enabled() && !kvm_has_sync_mmu()) > >> - monitor_printf(mon, "Using KVM without synchronous MMU, " > >> - "ballooning disabled\n"); > >> + qemu_error_new(QERR_SERVICE_UNAVAILABLE, > >> + "Using KVM without synchronous MMU, ballooning > >> disabled"); > >> else if (actual == 0) > >> - monitor_printf(mon, "Ballooning not activated in VM\n"); > >> + qemu_error_new(QERR_SERVICE_UNAVAILABLE, > >> + "Ballooning not activated in VM"); > >> else > >> *ret_data = QOBJECT(qint_from_int((int)(actual >> 20))); > >> } > >> > > > > In PATCH 7/10: > > > > +#define QERR_SERVICE_UNAVAILABLE \ > > + "{ 'class': 'ServiceUnavailable', 'data': { 'reason': %s } }" > > + > > > > and > > > > + { > > + .error_fmt = QERR_SERVICE_UNAVAILABLE, > > + .desc = "%(reason)", > > + }, > > > > How to do a ServiceUnavailable error with a description that is not a > > compile time literal? Add another macro and error table entry for that? > > > > An error that just contains reason is a good indication that the error > is not the right level of abstraction. > > There are two error conditions here. One is that kvm is in use, but > it's missing a capability and therefore we have to disable a feature. > The second error is that the guest did not activate a device. Thanks for the detailed explanation, I've included the new errors.