[libvirt] [PATCH v2 1/1] vz: Fix error messages in libvirt log caused by unhadled events

Nikolay Shirokovskiy nshirokovskiy at parallels.com
Wed Jun 24 10:48:45 UTC 2015



On 23.06.2015 13:26, Mikhail Feoktistov wrote:
> If the configuration of the instance has been modified, for example added disk or network device, then hypervisor
> sends event with prlIssuerType = PIE_DISPATCHER and EventType = PET_DSP_EVT_VM_CONFIG_CHANGED
> We should handle this event in prlsdkHandleVmEvent function to update instance's XML config.
> prlsdkHandleVmEvent is a common handler and it recieves many events.
> We don't need to handle all of them. Remove error message in case of unhandled events.
> ---
>  src/vz/vz_sdk.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
> index 98f7a57..d4d48e8 100644
> --- a/src/vz/vz_sdk.c
> +++ b/src/vz/vz_sdk.c
> @@ -1736,8 +1736,7 @@ prlsdkHandleVmEvent(vzConnPtr privconn, PRL_HANDLE prlEvent)
>              prlEvent = PRL_INVALID_HANDLE;
>              break;
>          default:
> -            virReportError(VIR_ERR_INTERNAL_ERROR,
> -                       _("Can't handle event of type %d"), prlEventType);
> +            VIR_DEBUG("Skipping event type %d", prlEventType);
>      }
>  
>   cleanup:
> @@ -1768,6 +1767,7 @@ prlsdkEventsHandler(PRL_HANDLE prlEvent, PRL_VOID_PTR opaque)
>  
>      switch (prlIssuerType) {
>          case PIE_VIRTUAL_MACHINE:
> +        case PIE_DISPATCHER:
>              prlsdkHandleVmEvent(privconn, prlEvent);
>              // above function takes own of event
>              prlEvent = PRL_INVALID_HANDLE;
> 

So as switch on issuer_type doesn't solve event discrimitation task
probably it would be better just to move to previous scheme.

Previous scheme has 2 very similar switches in prlsdkHandleVmEvent and prlsdkEventsHandler
and now I understand why.

1. SDK hides 3 types behind PHT_EVENT handles.
1. IOEvent
2. IOEventPackage
3. VMEvent
and only VMEvent has PrlEvent_GetIssuerId method, other types
responds PRL_UNIMPLEMENTED. Next we need an issuer_id for all
events of interest but we don't know if is safe to call
PrlEvent_GetIssuerId as we have no means to discriminate
IOEvent and VMEvent. So we discriminate by checking the result
of PrlEvent_GetType instead. Thus the only purpose of first
switch is to call PrlEvent_GetIssuerId safely.

The better approach will probably be to ask for PrlEvent_GetIssuerId
always and don't treat PRL_UNIMPLEMENTED as error. This way we can
get rid of the first switch.






More information about the libvir-list mailing list