On 01/19/2015 02:36 PM, Daniel P. Berrange wrote: > The virDBusMethodCall method has a DBusError as one of its > parameters. If the caller wants to pass a non-NULL value > for this, it immediately makes the calling code require > DBus at build time. This has led to breakage of non-DBus > builds several times. It is desirable that only the virdbus.c > file should need WITH_DBUS conditionals, so we must ideally > remove the DBusError parameter from the method. > > We can't simply raise a libvirt error, since the whole point > of this parameter is to give the callers a way to check if > the error is one they want to ignore, without having the logs > polluted with an error message. So, we add a virErrorPtr > parameter which the caller can then either ignore or raise > using virSetError. > > Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> > --- > src/util/virdbus.c | 31 +++++++++++++++++++------------ > src/util/virdbus.h | 4 ++-- > src/util/virfirewall.c | 29 ++++++----------------------- > src/util/virsystemd.c | 15 +++++++-------- > 4 files changed, 34 insertions(+), 45 deletions(-) > > @@ -820,11 +808,9 @@ virFirewallApplyRuleFirewallD(virFirewallRulePtr rule, > */ > if (ignoreErrors) { > VIR_DEBUG("Ignoring error '%s': '%s'", > - error.name, error.message); > + error.str1, error.message); > } else { > - virReportError(VIR_ERR_INTERNAL_ERROR, > - _("Unable to apply rule '%s'"), > - error.message); > + virSetError(&error); If ignoreErrors is false, we should be reporting the error, not just setting it. virRaiseErrorFull seems to be the only virError call writing to the log. > goto cleanup; > } > } else { > diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c > index 3eea5c2..0b71b26 100644 > --- a/src/util/virsystemd.c > +++ b/src/util/virsystemd.c > @@ -280,21 +280,20 @@ int virSystemdCreateMachine(const char *name, > "Before", "as", 1, "libvirt-guests.service") < 0) > goto cleanup; > > - if (dbus_error_is_set(&error)) { > + if (error.level == VIR_ERR_ERROR) { > if (STREQ_NULLABLE("org.freedesktop.DBus.Error.UnknownMethod", > - error.name)) { > + error.str1)) { > VIR_INFO("CreateMachineWithNetwork isn't supported, switching " > "to legacy CreateMachine method for systemd-machined"); > - dbus_error_free(&error); > + virResetError(&error); > virAtomicIntSet(&hasCreateWithNetwork, 0); > /* Could re-structure without Using goto, but this > * avoids another atomic read which would trigger > * another memory barrier */ > goto fallback; > } > - virReportError(VIR_ERR_DBUS_SERVICE, > - _("CreateMachineWithNetwork: %s"), > - error.message ? error.message : _("unknown error")); > + virSetError(&error); > + virResetError(&error); Same here. Jan > goto cleanup; > } > } else { >
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list