From 590082c305a366f96a833a794c5c8f7661faa5ad Mon Sep 17 00:00:00 2001 Message-Id: <590082c305a366f96a833a794c5c8f7661faa5ad.1284409900.git.jdenemar@redhat.com> From: Chris Wright <chrisw@redhat.com> Date: Mon, 26 Jul 2010 18:23:17 +0200 Subject: [PATCH] Add helpers qemuPrepareHostdevPCIDevice and qemuDomainReAttachHostdevDevices Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=630620 - src/qemu/qemu_driver.c: These new helpers take hostdev list and count directly rather than getting them indirectly from domain definition. This will allow reuse for the attach-device case. (cherry picked from commit f1365b558d0788512e14ce8a9b65b6fb247dc6fd) --- src/qemu/qemu_driver.c | 34 +++++++++++++++++++++++++--------- 1 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c7fd8a9..859f2af 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2862,14 +2862,15 @@ cleanup: static int -qemuPrepareHostPCIDevices(struct qemud_driver *driver, - virDomainDefPtr def) +qemuPrepareHostdevPCIDevices(struct qemud_driver *driver, + virDomainHostdevDefPtr *hostdevs, + int nhostdevs) { pciDeviceList *pcidevs; int i; int ret = -1; - if (!(pcidevs = qemuGetPciHostDeviceList(def->hostdevs, def->nhostdevs))) + if (!(pcidevs = qemuGetPciHostDeviceList(hostdevs, nhostdevs))) return -1; /* We have to use 3 loops here. *All* devices must @@ -2919,6 +2920,13 @@ cleanup: return ret; } +static int +qemuPrepareHostPCIDevices(struct qemud_driver *driver, + virDomainDefPtr def) +{ + return qemuPrepareHostdevPCIDevices(driver, def->hostdevs, def->nhostdevs); +} + static int qemuPrepareHostUSBDevices(struct qemud_driver *driver ATTRIBUTE_UNUSED, @@ -3012,16 +3020,14 @@ qemudReattachManagedDevice(pciDevice *dev, struct qemud_driver *driver) } static void -qemuDomainReAttachHostDevices(struct qemud_driver *driver, - virDomainDefPtr def) +qemuDomainReAttachHostdevDevices(struct qemud_driver *driver, + virDomainHostdevDefPtr *hostdevs, + int nhostdevs) { pciDeviceList *pcidevs; int i; - if (!def->nhostdevs) - return; - - if (!(pcidevs = qemuGetPciHostDeviceList(def->hostdevs, def->nhostdevs))) { + if (!(pcidevs = qemuGetPciHostDeviceList(hostdevs, nhostdevs))) { virErrorPtr err = virGetLastError(); VIR_ERROR(_("Failed to allocate pciDeviceList: %s"), err ? err->message : _("unknown error")); @@ -3055,6 +3061,16 @@ qemuDomainReAttachHostDevices(struct qemud_driver *driver, pciDeviceListFree(pcidevs); } +static void +qemuDomainReAttachHostDevices(struct qemud_driver *driver, + virDomainDefPtr def) +{ + if (!def->nhostdevs) + return; + + qemuDomainReAttachHostdevDevices(driver, def->hostdevs, def->nhostdevs); +} + static const char *const defaultDeviceACL[] = { "/dev/null", "/dev/full", "/dev/zero", "/dev/random", "/dev/urandom", -- 1.7.2.2