[libvirt] [PATCH 2/2] Don't return fatal error in HAL driver init if HAL isn't running

Ryota Ozaki ozaki.ryota at gmail.com
Fri Nov 13 13:14:22 UTC 2009


On Fri, Nov 13, 2009 at 9:21 PM, Daniel P. Berrange <berrange at redhat.com> wrote:
> The HAL driver returns a fatal error code in the case where HAL
> is not running. This causes the entire libvirtd daemon to quit
> which isn't desirable. Instead it should simply disable the HAL
> driver

I'm not sure what happens on this defect though, I guess this may be
a timing problem. I encountered this error during host and libvirtd bootup.
However, once the host bootup has complete and then I starts libvirtd
again, it succeeds.

This behavior had never occurred with 0.7.2.

Anyway, this fix certainly avoids worse result, ie, libvirtd quit, so ACK

  ozaki-r

>
> * src/node_device/node_device_hal.c: Quietly disable HAL if it is
>  not running
> ---
>  src/node_device/node_device_hal.c |    9 +++++++--
>  1 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_device_hal.c
> index 918a3a9..1e1d872 100644
> --- a/src/node_device/node_device_hal.c
> +++ b/src/node_device/node_device_hal.c
> @@ -692,6 +692,7 @@ static int halDeviceMonitorStartup(int privileged ATTRIBUTE_UNUSED)
>     DBusError err;
>     char **udi = NULL;
>     int num_devs, i;
> +    int ret = -1;
>
>     /* Ensure caps_tbl is sorted by capability name */
>     qsort(caps_tbl, ARRAY_CARDINALITY(caps_tbl), sizeof(caps_tbl[0]),
> @@ -728,7 +729,11 @@ static int halDeviceMonitorStartup(int privileged ATTRIBUTE_UNUSED)
>         goto failure;
>     }
>     if (!libhal_ctx_init(hal_ctx, &err)) {
> -        VIR_ERROR0("libhal_ctx_init failed\n");
> +        VIR_ERROR0("libhal_ctx_init failed, haldaemon is probably not running\n");
> +        /* We don't want to show a fatal error here,
> +           otherwise entire libvirtd shuts down when
> +           hald isn't running */
> +        ret = 0;
>         goto failure;
>     }
>
> @@ -787,7 +792,7 @@ static int halDeviceMonitorStartup(int privileged ATTRIBUTE_UNUSED)
>     nodeDeviceUnlock(driverState);
>     VIR_FREE(driverState);
>
> -    return -1;
> +    return ret;
>  }
>
>
> --
> 1.6.2.5
>
> --
> Libvir-list mailing list
> Libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>




More information about the libvir-list mailing list