[libvirt] [PATCH 1/3] qemu: Refactor the max memlock routine
Daniel Henrique Barboza
danielhb413 at gmail.com
Fri Sep 6 14:09:21 UTC 2019
On 9/3/19 5:09 PM, Eric Farman wrote:
> Let's pull this hunk out into a function, so it can be reused
> in another codepath that needs to do the same thing.
>
> Signed-off-by: Eric Farman <farman at linux.ibm.com>
> ---
Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> src/qemu/qemu_domain.c | 30 ++++++++++++++++++++++++++++++
> src/qemu/qemu_domain.h | 2 ++
> src/qemu/qemu_hotplug.c | 11 +----------
> 3 files changed, 33 insertions(+), 10 deletions(-)
>
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index c7eb0b5e9a..a63a035328 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -11723,6 +11723,36 @@ qemuDomainAdjustMaxMemLock(virDomainObjPtr vm)
> return ret;
> }
>
> +
> +/**
> + * qemuDomainAdjustMaxMemLockHostdev:
> + * @vm: domain
> + * @hostdev: device
> + *
> + * Temporarily add the hostdev to the domain definition. This is needed
> + * because qemuDomainAdjustMaxMemLock() requires the hostdev to be already
> + * part of the domain definition, but other functions like
> + * qemuAssignDeviceHostdevAlias() expect it *not* to be there.
> + * A better way to handle this would be nice
> + *
> + * Returns: 0 on success, <0 on failure
> + */
> +int
> +qemuDomainAdjustMaxMemLockHostdev(virDomainObjPtr vm,
> + virDomainHostdevDefPtr hostdev)
> +{
> + int ret = 0;
> +
> + vm->def->hostdevs[vm->def->nhostdevs++] = hostdev;
> + if (qemuDomainAdjustMaxMemLock(vm) < 0)
> + ret = -1;
> +
> + vm->def->hostdevs[--(vm->def->nhostdevs)] = NULL;
> +
> + return ret;
> +}
> +
> +
> /**
> * qemuDomainHasVcpuPids:
> * @vm: Domain object
> diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
> index d097f23342..456c623336 100644
> --- a/src/qemu/qemu_domain.h
> +++ b/src/qemu/qemu_domain.h
> @@ -931,6 +931,8 @@ void qemuDomainUpdateCurrentMemorySize(virDomainObjPtr vm);
>
> unsigned long long qemuDomainGetMemLockLimitBytes(virDomainDefPtr def);
> int qemuDomainAdjustMaxMemLock(virDomainObjPtr vm);
> +int qemuDomainAdjustMaxMemLockHostdev(virDomainObjPtr vm,
> + virDomainHostdevDefPtr hostdev);
>
> int qemuDomainDefValidateMemoryHotplug(const virDomainDef *def,
> virQEMUCapsPtr qemuCaps,
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index 63acb9c451..24e75e49be 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -1508,17 +1508,8 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver,
> break;
> }
>
> - /* Temporarily add the hostdev to the domain definition. This is needed
> - * because qemuDomainAdjustMaxMemLock() requires the hostdev to be already
> - * part of the domain definition, but other functions like
> - * qemuAssignDeviceHostdevAlias() used below expect it *not* to be there.
> - * A better way to handle this would be nice */
> - vm->def->hostdevs[vm->def->nhostdevs++] = hostdev;
> - if (qemuDomainAdjustMaxMemLock(vm) < 0) {
> - vm->def->hostdevs[--(vm->def->nhostdevs)] = NULL;
> + if (qemuDomainAdjustMaxMemLockHostdev(vm, hostdev) < 0)
> goto error;
> - }
> - vm->def->hostdevs[--(vm->def->nhostdevs)] = NULL;
>
> if (qemuDomainNamespaceSetupHostdev(vm, hostdev) < 0)
> goto error;
More information about the libvir-list
mailing list