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

Daniel Veillard veillard at redhat.com
Fri Nov 13 14:49:06 UTC 2009


On Fri, Nov 13, 2009 at 12:21:11PM +0000, Daniel P. Berrange 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
> 
> * 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;
>  }
>  
>  

  ACK, makes sense,

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list