[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