[libvirt] [PATCH v2 2/7] qemu: domain: store and update panic info
Michal Privoznik
mprivozn at redhat.com
Wed Mar 27 13:05:18 UTC 2019
On 3/25/19 9:04 AM, Bjoern Walk wrote:
> Let's store additional state information in the hypervisor-specific
> private data to virDomainObj. For now, just consider panic state in QEMU
> domains for which additional information is available from the guest
> crash event handler.
>
> Reviewed-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
> Signed-off-by: Bjoern Walk <bwalk at linux.ibm.com>
> ---
> src/qemu/qemu_domain.c | 36 ++++++++++++++++++++++++++++++++++++
> src/qemu/qemu_domain.h | 5 +++++
> src/qemu/qemu_driver.c | 2 ++
> 3 files changed, 43 insertions(+)
>
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index c6e07bcb..fb43035e 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -2052,6 +2052,9 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivatePtr priv)
> virBitmapFree(priv->migrationCaps);
> priv->migrationCaps = NULL;
>
> + qemuDomainStatePanicInfoFree(priv->panicInfo);
> + priv->panicInfo = NULL;
> +
> qemuDomainObjResetJob(priv);
> qemuDomainObjResetAsyncJob(priv);
> }
> @@ -14069,6 +14072,39 @@ qemuDomainStatePanicInfoFormatMsg(qemuDomainStatePanicInfoPtr info)
> }
>
>
> +void
> +qemuDomainStatePanicInfoSet(virDomainObjPtr vm,
> + qemuDomainStatePanicInfoPtr info)
> +{
> + qemuDomainObjPrivatePtr priv = vm->privateData;
> +
> + if (!priv->panicInfo && VIR_ALLOC(priv->panicInfo) < 0)
> + return;
> +
> + priv->panicInfo->type = info->type;
> +
> + switch (info->type) {
> + case QEMU_DOMAIN_STATE_PANIC_INFO_TYPE_HYPERV:
> + priv->panicInfo->data.hyperv.arg1 = info->data.hyperv.arg1;
> + priv->panicInfo->data.hyperv.arg2 = info->data.hyperv.arg2;
> + priv->panicInfo->data.hyperv.arg3 = info->data.hyperv.arg3;
> + priv->panicInfo->data.hyperv.arg4 = info->data.hyperv.arg4;
> + priv->panicInfo->data.hyperv.arg5 = info->data.hyperv.arg5;
> + break;
> + case QEMU_DOMAIN_STATE_PANIC_INFO_TYPE_S390:
> + priv->panicInfo->data.s390.core = info->data.s390.core;
> + priv->panicInfo->data.s390.psw_mask = info->data.s390.psw_mask;
> + priv->panicInfo->data.s390.psw_addr = info->data.s390.psw_addr;
> + ignore_value(VIR_STRDUP(priv->panicInfo->data.s390.reason,
> + info->data.s390.reason));
> + break;
> + case QEMU_DOMAIN_STATE_PANIC_INFO_TYPE_NONE:
> + case QEMU_DOMAIN_STATE_PANIC_INFO_TYPE_LAST:
> + break;
> + }
How about memcpy() and then just STRDUP() in the one place we need to?
No need to send v3 for that, just asking and if so, I can fix that
before pushing.
My reasoning is that it might be easy to forget update this function if
qemuDomainStatePanicInfo struct gets a new member.
Michal
More information about the libvir-list
mailing list