From: Peter Krempa Date: Wed, 5 Mar 2014 14:08:56 +0000 (+0100) Subject: qemu: monitor: Provide more information in generic block job error X-Git-Tag: v1.2.3-rc1~343 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e04d65a07dcc3c22dac7cc2cebb36d91481ef04;p=thirdparty%2Flibvirt.git qemu: monitor: Provide more information in generic block job error The qemuMonitorJSONBlockJob handles a few errors internally. If qemu returns a different error we would report a rather unhelpful message: $ virsh blockpull gluster-job vda --base /dev/null error: internal error: Unexpected error As the actual message from qemu contains a bit more info, let's use it to report something a little more useful: $ virsh blockpull gluster-job vda --base /dev/null error: internal error: Unexpected error: (GenericError) 'Base '/dev/null' not found' --- diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 9a5b8121e1..ee3ae156a2 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -3678,8 +3678,12 @@ qemuMonitorJSONBlockJob(qemuMonitorPtr mon, virReportError(VIR_ERR_OPERATION_INVALID, _("Command '%s' is not found"), cmd_name); } else { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Unexpected error")); + virJSONValuePtr error = virJSONValueObjectGet(reply, "error"); + + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected error: (%s) '%s'"), + NULLSTR(virJSONValueObjectGetString(error, "class")), + NULLSTR(virJSONValueObjectGetString(error, "desc"))); } }