[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