[libvirt] [PATCH 4/8] qemu: Cleanup improper VIR_ERR_NO_SUPPORT use
Daniel P. Berrange
berrange at redhat.com
Thu Sep 1 09:11:46 UTC 2011
On Thu, Sep 01, 2011 at 10:04:49AM +0200, Matthias Bolte wrote:
> 2011/9/1 Osier Yang <jyang at redhat.com>:
> > 于 2011年08月25日 05:47, Daniel P. Berrange 写道:
> >>
> >> On Tue, Aug 23, 2011 at 05:39:41PM +0800, Osier Yang wrote:
> >>>
> >>> * src/qemu/qemu_command.c:
> >>> s/VIR_ERR_NO_SUPPORT/VIR_ERR_CONFIG_UNSUPPORTED/
> >>>
> >>> * src/qemu/qemu_driver.c: s/VIR_ERR_NO_SUPPORT/VIR_ERR_OPERATION_INVALID/
> >>>
> >>> * src/qemu/qemu_process.c:
> >>> s/VIR_ERR_NO_SUPPORT/VIR_ERR_OPERATION_INVALID/
> >>> ---
> >>> src/qemu/qemu_command.c | 4 ++--
> >>> src/qemu/qemu_driver.c | 16 ++++++++--------
> >>> src/qemu/qemu_process.c | 4 ++--
> >>> 3 files changed, 12 insertions(+), 12 deletions(-)
> >>>
> >>> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> >>> index dbfc7d9..287ad8d 100644
> >>> --- a/src/qemu/qemu_command.c
> >>> +++ b/src/qemu/qemu_command.c
> >>> @@ -4084,7 +4084,7 @@ qemuBuildCommandLine(virConnectPtr conn,
> >>> switch(console->targetType) {
> >>> case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO:
> >>> if (!qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
> >>> - qemuReportError(VIR_ERR_NO_SUPPORT, "%s",
> >>> + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> >>> _("virtio channel requires QEMU to support
> >>> -device"));
> >>> goto error;
> >>> }
> >>> @@ -4109,7 +4109,7 @@ qemuBuildCommandLine(virConnectPtr conn,
> >>> break;
> >>>
> >>> default:
> >>> - qemuReportError(VIR_ERR_NO_SUPPORT,
> >>> + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> >>> _("unsupported console target type %s"),
> >>>
> >>> NULLSTR(virDomainChrConsoleTargetTypeToString(console->targetType)));
> >>> goto error;
> >>> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> >>> index c8dda73..fc2538a 100644
> >>> --- a/src/qemu/qemu_driver.c
> >>> +++ b/src/qemu/qemu_driver.c
> >>> @@ -1552,7 +1552,7 @@ static int qemuDomainReboot(virDomainPtr dom,
> >>> unsigned int flags) {
> >>> vm = NULL;
> >>> } else {
> >>> #endif
> >>> - qemuReportError(VIR_ERR_NO_SUPPORT, "%s",
> >>> + qemuReportError(VIR_ERR_OPERATION_INVALID, "%s",
> >>> _("Reboot is not supported without the JSON
> >>> monitor"));
> >>> #if HAVE_YAJL
> >>> }
> >>> @@ -3309,7 +3309,7 @@ qemudDomainPinVcpuFlags(virDomainPtr dom,
> >>> cpumap, maplen, maxcpu)< 0)
> >>> goto cleanup;
> >>> } else {
> >>> - qemuReportError(VIR_ERR_NO_SUPPORT,
> >>> + qemuReportError(VIR_ERR_OPERATION_INVALID,
> >>> "%s", _("cpu affinity is not supported"));
> >>> goto cleanup;
> >>> }
> >>> @@ -3563,7 +3563,7 @@ qemudDomainGetVcpus(virDomainPtr dom,
> >>> goto cleanup;
> >>> }
> >>> } else {
> >>> - qemuReportError(VIR_ERR_NO_SUPPORT,
> >>> + qemuReportError(VIR_ERR_OPERATION_INVALID,
> >>> "%s", _("cpu affinity is not
> >>> available"));
> >>> goto cleanup;
> >>> }
> >>> @@ -5637,7 +5637,7 @@ static int
> >>> qemuDomainSetBlkioParameters(virDomainPtr dom,
> >>> }
> >>>
> >>> if (!qemuCgroupControllerActive(driver,
> >>> VIR_CGROUP_CONTROLLER_BLKIO)) {
> >>> - qemuReportError(VIR_ERR_NO_SUPPORT, _("blkio cgroup isn't
> >>> mounted"));
> >>> + qemuReportError(VIR_ERR_OPERATION_INVALID, _("blkio cgroup
> >>> isn't mounted"));
> >>> goto cleanup;
> >>> }
> >>>
> >>> @@ -5790,7 +5790,7 @@ static int
> >>> qemuDomainGetBlkioParameters(virDomainPtr dom,
> >>> }
> >>>
> >>> if (!qemuCgroupControllerActive(driver,
> >>> VIR_CGROUP_CONTROLLER_BLKIO)) {
> >>> - qemuReportError(VIR_ERR_NO_SUPPORT, _("blkio cgroup isn't
> >>> mounted"));
> >>> + qemuReportError(VIR_ERR_OPERATION_INVALID, _("blkio cgroup
> >>> isn't mounted"));
> >>> goto cleanup;
> >>> }
> >>>
> >> THe use of VIR_ERR_OPERATION_INVALID is not correct here, but I'm not
> >> certain what other error is best. Perhaps ARGUMENT_UNSUPPORTED
> >
> > For VIR_ERR_OPERATION_INVALID:
> >
> > errmsg = _("Requested operation is not valid");
> >
> > For VIR_ERR_ARGUMENT_UNSUPPORTED:
> >
> > errmsg = _("argument unsupported");
> >
> > From the user's point of view, I think OPERATION_INVALID is more clear
> > and sensiable. E.g.
> > "Requested operation is not valid: blkio cgroup isn't mounted"
> >
> > "argument unsupported: blkio cgroup isn't mounted"
> >
> > Could we just extend the meaning for OPERATION_INVALID
> > so that it's not just used when the object operated on is not in
> > correct state, and used for things like above?
> >
> > Otherwise, I'd prefer INTERNAL_ERROR here.
>
> Do we have documented in detail somewhere when this error codes in
> question here are to be used?
>
> For example what's the difference between VIR_ERR_OPERATION_DENIED and
> VIR_ERR_OPERATION_INVALID. VIR_ERR_OPERATION_DENIED is mostly used in
> libvirt.c in case of a read-only connection, but it's also used in the
> xen, secret and openvz drivers. In this drivers probably
> VIR_ERR_OPERATION_INVALID was meant.
I think of OPERATIOIN_DENIED as suitable for any kind of access control
violation.
The OpenVZ driver should have been using OPERATION_INVALID.
The secret driver is correct.
The Xen XM driver should just have that chunk of code deleted, since
it merely duplicates the check already present in libvirt.c
> Anyway, I think we need documentation about in which situations what
> error codes are applicable and what their intended meaning is. We
> might also need to adjust the assigned error messages to improve error
> reporting.
Yeah, you're right, we do really need some documentation.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list