[PATCH RESEND 02/20] qemu, lxc: move NodeDeviceGetPCIInfo() function to domain_driver.c
Laine Stump
laine at redhat.com
Thu Jan 21 00:46:51 UTC 2021
On 1/18/21 2:53 PM, Daniel Henrique Barboza wrote:
> libxlNodeDeviceGetPCIInfo() and qemuNodeDeviceGetPCIInfo() are equal.
> Let's move the logic to a new virDomainDriverNodeDeviceGetPCIInfo()
> info to be used by libxl_driver.c and qemu_driver.c.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> ---
> src/hypervisor/domain_driver.c | 33 +++++++++++++++++++++++++++++
> src/hypervisor/domain_driver.h | 7 +++++++
> src/libvirt_private.syms | 1 +
> src/libxl/libxl_driver.c | 38 ++++------------------------------
> src/qemu/qemu_driver.c | 37 +++------------------------------
> 5 files changed, 48 insertions(+), 68 deletions(-)
>
> diff --git a/src/hypervisor/domain_driver.c b/src/hypervisor/domain_driver.c
> index 8dc5870a61..68dbf10ac6 100644
> --- a/src/hypervisor/domain_driver.c
> +++ b/src/hypervisor/domain_driver.c
> @@ -21,6 +21,7 @@
> #include <config.h>
>
> #include "domain_driver.h"
> +#include "node_device_conf.h"
Since you #include node_device_conf.h from domain_driver.h, you don't
need to include it here.
With that fixed,
Reviewed-by: Laine Stump <laine at redhat.com>
> #include "viralloc.h"
> #include "virstring.h"
> #include "vircrypto.h"
> @@ -336,3 +337,35 @@ virDomainDriverSetupPersistentDefBlkioParams(virDomainDefPtr persistentDef,
>
> return ret;
> }
> +
> +
> +int
> +virDomainDriverNodeDeviceGetPCIInfo(virNodeDeviceDefPtr def,
> + unsigned *domain,
> + unsigned *bus,
> + unsigned *slot,
> + unsigned *function)
> +{
> + virNodeDevCapsDefPtr cap;
> +
> + cap = def->caps;
> + while (cap) {
> + if (cap->data.type == VIR_NODE_DEV_CAP_PCI_DEV) {
> + *domain = cap->data.pci_dev.domain;
> + *bus = cap->data.pci_dev.bus;
> + *slot = cap->data.pci_dev.slot;
> + *function = cap->data.pci_dev.function;
> + break;
> + }
> +
> + cap = cap->next;
> + }
> +
> + if (!cap) {
> + virReportError(VIR_ERR_INVALID_ARG,
> + _("device %s is not a PCI device"), def->name);
> + return -1;
> + }
> +
> + return 0;
> +}
> diff --git a/src/hypervisor/domain_driver.h b/src/hypervisor/domain_driver.h
> index b66ae2d421..2bb053d559 100644
> --- a/src/hypervisor/domain_driver.h
> +++ b/src/hypervisor/domain_driver.h
> @@ -21,6 +21,7 @@
> #pragma once
>
> #include "domain_conf.h"
> +#include "node_device_conf.h"
>
> char *
> virDomainDriverGenerateRootHash(const char *drivername,
> @@ -45,3 +46,9 @@ int virDomainDriverParseBlkioDeviceStr(char *blkioDeviceStr, const char *type,
> int virDomainDriverSetupPersistentDefBlkioParams(virDomainDefPtr persistentDef,
> virTypedParameterPtr params,
> int nparams);
> +
> +int virDomainDriverNodeDeviceGetPCIInfo(virNodeDeviceDefPtr def,
> + unsigned *domain,
> + unsigned *bus,
> + unsigned *slot,
> + unsigned *function);
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index c325040b60..55284577b0 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1445,6 +1445,7 @@ virDomainCgroupSetupMemtune;
> virDomainDriverGenerateMachineName;
> virDomainDriverGenerateRootHash;
> virDomainDriverMergeBlkioDevice;
> +virDomainDriverNodeDeviceGetPCIInfo;
> virDomainDriverParseBlkioDeviceStr;
> virDomainDriverSetupPersistentDefBlkioParams;
>
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index 5bd3614e21..0821d39c9b 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -56,6 +56,7 @@
> #include "cpu/cpu.h"
> #include "virutil.h"
> #include "domain_validate.h"
> +#include "domain_driver.h"
>
> #define VIR_FROM_THIS VIR_FROM_LIBXL
>
> @@ -5773,37 +5774,6 @@ libxlConnectSupportsFeature(virConnectPtr conn, int feature)
> }
> }
>
> -static int
> -libxlNodeDeviceGetPCIInfo(virNodeDeviceDefPtr def,
> - unsigned *domain,
> - unsigned *bus,
> - unsigned *slot,
> - unsigned *function)
> -{
> - virNodeDevCapsDefPtr cap;
> -
> - cap = def->caps;
> - while (cap) {
> - if (cap->data.type == VIR_NODE_DEV_CAP_PCI_DEV) {
> - *domain = cap->data.pci_dev.domain;
> - *bus = cap->data.pci_dev.bus;
> - *slot = cap->data.pci_dev.slot;
> - *function = cap->data.pci_dev.function;
> - break;
> - }
> -
> - cap = cap->next;
> - }
> -
> - if (!cap) {
> - virReportError(VIR_ERR_INVALID_ARG,
> - _("device %s is not a PCI device"), def->name);
> - return -1;
> - }
> -
> - return 0;
> -}
> -
> static int
> libxlNodeDeviceDetachFlags(virNodeDevicePtr dev,
> const char *driverName,
> @@ -5845,7 +5815,7 @@ libxlNodeDeviceDetachFlags(virNodeDevicePtr dev,
> if (virNodeDeviceDetachFlagsEnsureACL(dev->conn, def) < 0)
> goto cleanup;
>
> - if (libxlNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> + if (virDomainDriverNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> goto cleanup;
>
> pci = virPCIDeviceNew(domain, bus, slot, function);
> @@ -5916,7 +5886,7 @@ libxlNodeDeviceReAttach(virNodeDevicePtr dev)
> if (virNodeDeviceReAttachEnsureACL(dev->conn, def) < 0)
> goto cleanup;
>
> - if (libxlNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> + if (virDomainDriverNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> goto cleanup;
>
> pci = virPCIDeviceNew(domain, bus, slot, function);
> @@ -5974,7 +5944,7 @@ libxlNodeDeviceReset(virNodeDevicePtr dev)
> if (virNodeDeviceResetEnsureACL(dev->conn, def) < 0)
> goto cleanup;
>
> - if (libxlNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> + if (virDomainDriverNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> goto cleanup;
>
> pci = virPCIDeviceNew(domain, bus, slot, function);
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 027617deef..0a732a241d 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -11955,37 +11955,6 @@ qemuDomainMigrateConfirm3Params(virDomainPtr domain,
> }
>
>
> -static int
> -qemuNodeDeviceGetPCIInfo(virNodeDeviceDefPtr def,
> - unsigned *domain,
> - unsigned *bus,
> - unsigned *slot,
> - unsigned *function)
> -{
> - virNodeDevCapsDefPtr cap;
> -
> - cap = def->caps;
> - while (cap) {
> - if (cap->data.type == VIR_NODE_DEV_CAP_PCI_DEV) {
> - *domain = cap->data.pci_dev.domain;
> - *bus = cap->data.pci_dev.bus;
> - *slot = cap->data.pci_dev.slot;
> - *function = cap->data.pci_dev.function;
> - break;
> - }
> -
> - cap = cap->next;
> - }
> -
> - if (!cap) {
> - virReportError(VIR_ERR_INVALID_ARG,
> - _("device %s is not a PCI device"), def->name);
> - return -1;
> - }
> -
> - return 0;
> -}
> -
> static int
> qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
> const char *driverName,
> @@ -12028,7 +11997,7 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
> if (virNodeDeviceDetachFlagsEnsureACL(dev->conn, def) < 0)
> goto cleanup;
>
> - if (qemuNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> + if (virDomainDriverNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> goto cleanup;
>
> pci = virPCIDeviceNew(domain, bus, slot, function);
> @@ -12109,7 +12078,7 @@ qemuNodeDeviceReAttach(virNodeDevicePtr dev)
> if (virNodeDeviceReAttachEnsureACL(dev->conn, def) < 0)
> goto cleanup;
>
> - if (qemuNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> + if (virDomainDriverNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> goto cleanup;
>
> pci = virPCIDeviceNew(domain, bus, slot, function);
> @@ -12163,7 +12132,7 @@ qemuNodeDeviceReset(virNodeDevicePtr dev)
> if (virNodeDeviceResetEnsureACL(dev->conn, def) < 0)
> goto cleanup;
>
> - if (qemuNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> + if (virDomainDriverNodeDeviceGetPCIInfo(def, &domain, &bus, &slot, &function) < 0)
> goto cleanup;
>
> pci = virPCIDeviceNew(domain, bus, slot, function);
More information about the libvir-list
mailing list