[libvirt] [PATCH v2] systemd: fix build without dbus

Ján Tomko jtomko at redhat.com
Wed Jan 21 14:15:31 UTC 2015


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 at redhat.com>
> ---
>  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 {
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150121/2fd73718/attachment-0001.sig>


More information about the libvir-list mailing list