From c5c28baba155a6d090cd19cbce823cd0072fe6cf Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Nov 04 2013 06:27:40 +0000 Subject: Upstream release of libvirt-1.1.4 --- diff --git a/0001-qemu_hotplug-Allow-QoS-update-in-qemuDomainChangeNet.patch b/0001-qemu_hotplug-Allow-QoS-update-in-qemuDomainChangeNet.patch deleted file mode 100644 index 2f04849..0000000 --- a/0001-qemu_hotplug-Allow-QoS-update-in-qemuDomainChangeNet.patch +++ /dev/null @@ -1,66 +0,0 @@ -From d519f225d79a61451cfa62b463ea3083e9367353 Mon Sep 17 00:00:00 2001 -From: Michal Privoznik -Date: Tue, 1 Oct 2013 15:04:48 +0200 -Subject: [PATCH] qemu_hotplug: Allow QoS update in qemuDomainChangeNet - -The qemuDomainChangeNet() is called when 'virsh update-device' is -invoked on a NIC. Currently, we fail to update the QoS even though -we have routines for that. - -Signed-off-by: Michal Privoznik -(cherry picked from commit 9fa10d3901a14997f724fe50ad8a33d7f0d23abe) ---- - src/qemu/qemu_hotplug.c | 19 +++++++++++++++++-- - 1 file changed, 17 insertions(+), 2 deletions(-) - -diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c -index f06930e..818c726 100644 ---- a/src/qemu/qemu_hotplug.c -+++ b/src/qemu/qemu_hotplug.c -@@ -1799,6 +1799,7 @@ qemuDomainChangeNet(virQEMUDriverPtr driver, - bool needFilterChange = false; - bool needLinkStateChange = false; - bool needReplaceDevDef = false; -+ bool needBandwidthSet = false; - int ret = -1; - - if (!devslot || !(olddev = *devslot)) { -@@ -2062,8 +2063,6 @@ qemuDomainChangeNet(virQEMUDriverPtr driver, - virDomainNetGetActualDirectMode(olddev) != virDomainNetGetActualDirectMode(olddev) || - !virNetDevVPortProfileEqual(virDomainNetGetActualVirtPortProfile(olddev), - virDomainNetGetActualVirtPortProfile(newdev)) || -- !virNetDevBandwidthEqual(virDomainNetGetActualBandwidth(olddev), -- virDomainNetGetActualBandwidth(newdev)) || - !virNetDevVlanEqual(virDomainNetGetActualVlan(olddev), - virDomainNetGetActualVlan(newdev))) { - needReconnect = true; -@@ -2072,6 +2071,10 @@ qemuDomainChangeNet(virQEMUDriverPtr driver, - if (olddev->linkstate != newdev->linkstate) - needLinkStateChange = true; - -+ if (!virNetDevBandwidthEqual(virDomainNetGetActualBandwidth(olddev), -+ virDomainNetGetActualBandwidth(newdev))) -+ needBandwidthSet = true; -+ - /* FINALLY - actually perform the required actions */ - - if (needReconnect) { -@@ -2081,6 +2084,18 @@ qemuDomainChangeNet(virQEMUDriverPtr driver, - goto cleanup; - } - -+ if (needBandwidthSet) { -+ if (virNetDevBandwidthSet(newdev->ifname, -+ virDomainNetGetActualBandwidth(newdev), -+ false) < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, -+ _("cannot set bandwidth limits on %s"), -+ newdev->ifname); -+ goto cleanup; -+ } -+ needReplaceDevDef = true; -+ } -+ - if (needBridgeChange) { - if (qemuDomainChangeNetBridge(dom->conn, vm, olddev, newdev) < 0) - goto cleanup; diff --git a/0002-virNetDevBandwidthEqual-Make-it-more-robust.patch b/0002-virNetDevBandwidthEqual-Make-it-more-robust.patch deleted file mode 100644 index 695341d..0000000 --- a/0002-virNetDevBandwidthEqual-Make-it-more-robust.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 658f4b3c39c9bdd490a44175742f8259dd10b84f Mon Sep 17 00:00:00 2001 -From: Michal Privoznik -Date: Wed, 2 Oct 2013 09:18:02 +0200 -Subject: [PATCH] virNetDevBandwidthEqual: Make it more robust - -So far the virNetDevBandwidthEqual() expected both ->in and ->out items -to be allocated for both @a and @b compared. This is not necessary true -for all our code. For instance, running 'update-device' twice over a NIC -with the very same XML results in SIGSEGV-ing in this function. - -Signed-off-by: Michal Privoznik -(cherry picked from commit ee02fbc8e4a24c1347761ceff2ddb2c108e9611c) ---- - src/util/virnetdevbandwidth.c | 26 ++++++++++++++++++++------ - 1 file changed, 20 insertions(+), 6 deletions(-) - -diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c -index 42b0a50..17f4fa3 100644 ---- a/src/util/virnetdevbandwidth.c -+++ b/src/util/virnetdevbandwidth.c -@@ -335,16 +335,30 @@ virNetDevBandwidthEqual(virNetDevBandwidthPtr a, - return false; - - /* in */ -- if (a->in->average != b->in->average || -- a->in->peak != b->in->peak || -- a->in->burst != b->in->burst) -+ if (a->in) { -+ if (!b->in) -+ return false; -+ -+ if (a->in->average != b->in->average || -+ a->in->peak != b->in->peak || -+ a->in->burst != b->in->burst) -+ return false; -+ } else if (b->in) { - return false; -+ } - - /*out*/ -- if (a->out->average != b->out->average || -- a->out->peak != b->out->peak || -- a->out->burst != b->out->burst) -+ if (a->out) { -+ if (!b->out) -+ return false; -+ -+ if (a->out->average != b->out->average || -+ a->out->peak != b->out->peak || -+ a->out->burst != b->out->burst) -+ return false; -+ } else if (b->out) { - return false; -+ } - - return true; - } diff --git a/0003-Remove-virConnectPtr-arg-from-virNWFilterDefParse.patch b/0003-Remove-virConnectPtr-arg-from-virNWFilterDefParse.patch deleted file mode 100644 index cc711e2..0000000 --- a/0003-Remove-virConnectPtr-arg-from-virNWFilterDefParse.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 56c170544f7a71749ef63fef650c71787c05e8af Mon Sep 17 00:00:00 2001 -From: "Daniel P. Berrange" -Date: Thu, 3 Oct 2013 14:06:58 +0100 -Subject: [PATCH] Remove virConnectPtr arg from virNWFilterDefParse* - -None of the virNWFilterDefParse* methods require a virConnectPtr -arg, so just drop it - -Signed-off-by: Daniel P. Berrange ---- - src/conf/nwfilter_conf.c | 15 ++++++--------- - src/conf/nwfilter_conf.h | 6 ++---- - src/nwfilter/nwfilter_driver.c | 2 +- - tests/nwfilterxml2xmltest.c | 2 +- - 4 files changed, 10 insertions(+), 15 deletions(-) - -diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c -index 3456b77..c009921 100644 ---- a/src/conf/nwfilter_conf.c -+++ b/src/conf/nwfilter_conf.c -@@ -2634,8 +2634,7 @@ cleanup: - - - static virNWFilterDefPtr --virNWFilterDefParse(virConnectPtr conn ATTRIBUTE_UNUSED, -- const char *xmlStr, -+virNWFilterDefParse(const char *xmlStr, - const char *filename) { - virNWFilterDefPtr def = NULL; - xmlDocPtr xml; -@@ -2650,18 +2649,16 @@ virNWFilterDefParse(virConnectPtr conn ATTRIBUTE_UNUSED, - - - virNWFilterDefPtr --virNWFilterDefParseString(virConnectPtr conn, -- const char *xmlStr) -+virNWFilterDefParseString(const char *xmlStr) - { -- return virNWFilterDefParse(conn, xmlStr, NULL); -+ return virNWFilterDefParse(xmlStr, NULL); - } - - - virNWFilterDefPtr --virNWFilterDefParseFile(virConnectPtr conn, -- const char *filename) -+virNWFilterDefParseFile(const char *filename) - { -- return virNWFilterDefParse(conn, NULL, filename); -+ return virNWFilterDefParse(NULL, filename); - } - - -@@ -3056,7 +3053,7 @@ virNWFilterObjLoad(virConnectPtr conn, - virNWFilterDefPtr def; - virNWFilterObjPtr nwfilter; - -- if (!(def = virNWFilterDefParseFile(conn, path))) { -+ if (!(def = virNWFilterDefParseFile(path))) { - return NULL; - } - -diff --git a/src/conf/nwfilter_conf.h b/src/conf/nwfilter_conf.h -index 5d04cff..faa7527 100644 ---- a/src/conf/nwfilter_conf.h -+++ b/src/conf/nwfilter_conf.h -@@ -713,10 +713,8 @@ int virNWFilterLoadAllConfigs(virConnectPtr conn, - char *virNWFilterConfigFile(const char *dir, - const char *name); - --virNWFilterDefPtr virNWFilterDefParseString(virConnectPtr conn, -- const char *xml); --virNWFilterDefPtr virNWFilterDefParseFile(virConnectPtr conn, -- const char *filename); -+virNWFilterDefPtr virNWFilterDefParseString(const char *xml); -+virNWFilterDefPtr virNWFilterDefParseFile(const char *filename); - - void virNWFilterObjLock(virNWFilterObjPtr obj); - void virNWFilterObjUnlock(virNWFilterObjPtr obj); -diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c -index 1ed28a2..c2afdfc 100644 ---- a/src/nwfilter/nwfilter_driver.c -+++ b/src/nwfilter/nwfilter_driver.c -@@ -566,7 +566,7 @@ nwfilterDefineXML(virConnectPtr conn, - nwfilterDriverLock(driver); - virNWFilterCallbackDriversLock(); - -- if (!(def = virNWFilterDefParseString(conn, xml))) -+ if (!(def = virNWFilterDefParseString(xml))) - goto cleanup; - - if (virNWFilterDefineXMLEnsureACL(conn, def) < 0) -diff --git a/tests/nwfilterxml2xmltest.c b/tests/nwfilterxml2xmltest.c -index 84e61da..14191a6 100644 ---- a/tests/nwfilterxml2xmltest.c -+++ b/tests/nwfilterxml2xmltest.c -@@ -36,7 +36,7 @@ testCompareXMLToXMLFiles(const char *inxml, const char *outxml, - - virResetLastError(); - -- if (!(dev = virNWFilterDefParseString(NULL, inXmlData))) { -+ if (!(dev = virNWFilterDefParseString(inXmlData))) { - if (expect_error) { - virResetLastError(); - goto done; diff --git a/0004-Don-t-pass-virConnectPtr-in-nwfilter-struct-domUpdat.patch b/0004-Don-t-pass-virConnectPtr-in-nwfilter-struct-domUpdat.patch deleted file mode 100644 index 1ada4d9..0000000 --- a/0004-Don-t-pass-virConnectPtr-in-nwfilter-struct-domUpdat.patch +++ /dev/null @@ -1,355 +0,0 @@ -From 0a5abfb22d5d030cc3780c44b805b5b92567b44a Mon Sep 17 00:00:00 2001 -From: "Daniel P. Berrange" -Date: Thu, 3 Oct 2013 14:06:59 +0100 -Subject: [PATCH] Don't pass virConnectPtr in nwfilter 'struct - domUpdateCBStruct' - -The nwfilter driver only needs a reference to its private -state object, not a full virConnectPtr. Update the domUpdateCBStruct -struct to have a 'void *opaque' field instead of a virConnectPtr. - -Signed-off-by: Daniel P. Berrange ---- - src/conf/nwfilter_conf.c | 14 +++++++++++--- - src/conf/nwfilter_conf.h | 4 ++-- - src/nwfilter/nwfilter_dhcpsnoop.c | 12 ++++++------ - src/nwfilter/nwfilter_driver.c | 5 +++-- - src/nwfilter/nwfilter_gentech_driver.c | 32 ++++++++++++++++---------------- - src/nwfilter/nwfilter_gentech_driver.h | 10 +++++----- - src/nwfilter/nwfilter_learnipaddr.c | 6 +++--- - 7 files changed, 46 insertions(+), 37 deletions(-) - -diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c -index c009921..9927f7e 100644 ---- a/src/conf/nwfilter_conf.c -+++ b/src/conf/nwfilter_conf.c -@@ -2850,6 +2850,7 @@ virNWFilterCallbackDriversUnlock(void) - - - static virDomainObjListIterator virNWFilterDomainFWUpdateCB; -+static void *virNWFilterDomainFWUpdateOpaque; - - /** - * virNWFilterInstFiltersOnAllVMs: -@@ -2861,7 +2862,7 @@ virNWFilterInstFiltersOnAllVMs(virConnectPtr conn) - { - size_t i; - struct domUpdateCBStruct cb = { -- .conn = conn, -+ .opaque = virNWFilterDomainFWUpdateOpaque, - .step = STEP_APPLY_CURRENT, - .skipInterfaces = NULL, /* not needed */ - }; -@@ -2880,7 +2881,7 @@ virNWFilterTriggerVMFilterRebuild(virConnectPtr conn) - size_t i; - int ret = 0; - struct domUpdateCBStruct cb = { -- .conn = conn, -+ .opaque = virNWFilterDomainFWUpdateOpaque, - .step = STEP_APPLY_NEW, - .skipInterfaces = virHashCreate(0, NULL), - }; -@@ -3474,9 +3475,14 @@ char *virNWFilterConfigFile(const char *dir, - } - - --int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB) -+int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB, -+ void *opaque) - { -+ if (initialized) -+ return -1; -+ - virNWFilterDomainFWUpdateCB = domUpdateCB; -+ virNWFilterDomainFWUpdateOpaque = opaque; - - initialized = true; - -@@ -3495,6 +3501,8 @@ void virNWFilterConfLayerShutdown(void) - virMutexDestroy(&updateMutex); - - initialized = false; -+ virNWFilterDomainFWUpdateOpaque = NULL; -+ virNWFilterDomainFWUpdateCB = NULL; - } - - -diff --git a/src/conf/nwfilter_conf.h b/src/conf/nwfilter_conf.h -index faa7527..e470615 100644 ---- a/src/conf/nwfilter_conf.h -+++ b/src/conf/nwfilter_conf.h -@@ -586,7 +586,7 @@ enum UpdateStep { - }; - - struct domUpdateCBStruct { -- virConnectPtr conn; -+ void *opaque; - enum UpdateStep step; - virHashTablePtr skipInterfaces; - }; -@@ -722,7 +722,7 @@ void virNWFilterObjUnlock(virNWFilterObjPtr obj); - void virNWFilterLockFilterUpdates(void); - void virNWFilterUnlockFilterUpdates(void); - --int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB); -+int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB, void *opaque); - void virNWFilterConfLayerShutdown(void); - - int virNWFilterInstFiltersOnAllVMs(virConnectPtr conn); -diff --git a/src/nwfilter/nwfilter_dhcpsnoop.c b/src/nwfilter/nwfilter_dhcpsnoop.c -index 3e9f046..2bc1686 100644 ---- a/src/nwfilter/nwfilter_dhcpsnoop.c -+++ b/src/nwfilter/nwfilter_dhcpsnoop.c -@@ -481,15 +481,15 @@ virNWFilterSnoopIPLeaseInstallRule(virNWFilterSnoopIPLeasePtr ipl, - /* instantiate the filters */ - - if (req->ifname) -- rc = virNWFilterInstantiateFilterLate(NULL, -+ rc = virNWFilterInstantiateFilterLate(req->driver, -+ NULL, - req->ifname, - req->ifindex, - req->linkdev, - req->nettype, - &req->macaddr, - req->filtername, -- req->vars, -- req->driver); -+ req->vars); - - exit_snooprequnlock: - virNWFilterSnoopReqUnlock(req); -@@ -867,15 +867,15 @@ virNWFilterSnoopReqLeaseDel(virNWFilterSnoopReqPtr req, - goto skip_instantiate; - - if (ipAddrLeft) { -- ret = virNWFilterInstantiateFilterLate(NULL, -+ ret = virNWFilterInstantiateFilterLate(req->driver, -+ NULL, - req->ifname, - req->ifindex, - req->linkdev, - req->nettype, - &req->macaddr, - req->filtername, -- req->vars, -- req->driver); -+ req->vars); - } else { - const virNWFilterVarValuePtr dhcpsrvrs = - virHashLookup(req->vars->hashTable, NWFILTER_VARNAME_DHCPSERVER); -diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c -index c2afdfc..6e20e03 100644 ---- a/src/nwfilter/nwfilter_driver.c -+++ b/src/nwfilter/nwfilter_driver.c -@@ -203,7 +203,8 @@ nwfilterStateInitialize(bool privileged, - - virNWFilterTechDriversInit(privileged); - -- if (virNWFilterConfLayerInit(virNWFilterDomainFWUpdateCB) < 0) -+ if (virNWFilterConfLayerInit(virNWFilterDomainFWUpdateCB, -+ driverState) < 0) - goto err_techdrivers_shutdown; - - /* -@@ -681,7 +682,7 @@ nwfilterInstantiateFilter(virConnectPtr conn, - const unsigned char *vmuuid, - virDomainNetDefPtr net) - { -- return virNWFilterInstantiateFilter(conn, vmuuid, net); -+ return virNWFilterInstantiateFilter(conn->nwfilterPrivateData, vmuuid, net); - } - - -diff --git a/src/nwfilter/nwfilter_gentech_driver.c b/src/nwfilter/nwfilter_gentech_driver.c -index 382d73f..5961165 100644 ---- a/src/nwfilter/nwfilter_gentech_driver.c -+++ b/src/nwfilter/nwfilter_gentech_driver.c -@@ -800,7 +800,8 @@ err_unresolvable_vars: - * Call this function while holding the NWFilter filter update lock - */ - static int --__virNWFilterInstantiateFilter(const unsigned char *vmuuid, -+__virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver, -+ const unsigned char *vmuuid, - bool teardownOld, - const char *ifname, - int ifindex, -@@ -810,7 +811,6 @@ __virNWFilterInstantiateFilter(const unsigned char *vmuuid, - const char *filtername, - virNWFilterHashTablePtr filterparams, - enum instCase useNewFilter, -- virNWFilterDriverStatePtr driver, - bool forceWithPendingReq, - bool *foundNewFilter) - { -@@ -921,7 +921,7 @@ err_exit: - - - static int --_virNWFilterInstantiateFilter(virConnectPtr conn, -+_virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver, - const unsigned char *vmuuid, - const virDomainNetDefPtr net, - bool teardownOld, -@@ -948,7 +948,8 @@ _virNWFilterInstantiateFilter(virConnectPtr conn, - goto cleanup; - } - -- rc = __virNWFilterInstantiateFilter(vmuuid, -+ rc = __virNWFilterInstantiateFilter(driver, -+ vmuuid, - teardownOld, - net->ifname, - ifindex, -@@ -958,7 +959,6 @@ _virNWFilterInstantiateFilter(virConnectPtr conn, - net->filter, - net->filterparams, - useNewFilter, -- conn->nwfilterPrivateData, - false, - foundNewFilter); - -@@ -970,22 +970,23 @@ cleanup: - - - int --virNWFilterInstantiateFilterLate(const unsigned char *vmuuid, -+virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver, -+ const unsigned char *vmuuid, - const char *ifname, - int ifindex, - const char *linkdev, - enum virDomainNetType nettype, - const virMacAddrPtr macaddr, - const char *filtername, -- virNWFilterHashTablePtr filterparams, -- virNWFilterDriverStatePtr driver) -+ virNWFilterHashTablePtr filterparams) - { - int rc; - bool foundNewFilter = false; - - virNWFilterLockFilterUpdates(); - -- rc = __virNWFilterInstantiateFilter(vmuuid, -+ rc = __virNWFilterInstantiateFilter(driver, -+ vmuuid, - true, - ifname, - ifindex, -@@ -995,7 +996,6 @@ virNWFilterInstantiateFilterLate(const unsigned char *vmuuid, - filtername, - filterparams, - INSTANTIATE_ALWAYS, -- driver, - true, - &foundNewFilter); - if (rc < 0) { -@@ -1015,13 +1015,13 @@ virNWFilterInstantiateFilterLate(const unsigned char *vmuuid, - - - int --virNWFilterInstantiateFilter(virConnectPtr conn, -+virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver, - const unsigned char *vmuuid, - const virDomainNetDefPtr net) - { - bool foundNewFilter = false; - -- return _virNWFilterInstantiateFilter(conn, vmuuid, net, -+ return _virNWFilterInstantiateFilter(driver, vmuuid, net, - 1, - INSTANTIATE_ALWAYS, - &foundNewFilter); -@@ -1029,14 +1029,14 @@ virNWFilterInstantiateFilter(virConnectPtr conn, - - - int --virNWFilterUpdateInstantiateFilter(virConnectPtr conn, -+virNWFilterUpdateInstantiateFilter(virNWFilterDriverStatePtr driver, - const unsigned char *vmuuid, - const virDomainNetDefPtr net, - bool *skipIface) - { - bool foundNewFilter = false; - -- int rc = _virNWFilterInstantiateFilter(conn, vmuuid, net, -+ int rc = _virNWFilterInstantiateFilter(driver, vmuuid, net, - 0, - INSTANTIATE_FOLLOW_NEWFILTER, - &foundNewFilter); -@@ -1154,7 +1154,7 @@ virNWFilterDomainFWUpdateCB(virDomainObjPtr obj, - if ((net->filter) && (net->ifname)) { - switch (cb->step) { - case STEP_APPLY_NEW: -- ret = virNWFilterUpdateInstantiateFilter(cb->conn, -+ ret = virNWFilterUpdateInstantiateFilter(cb->opaque, - vm->uuid, - net, - &skipIface); -@@ -1179,7 +1179,7 @@ virNWFilterDomainFWUpdateCB(virDomainObjPtr obj, - break; - - case STEP_APPLY_CURRENT: -- ret = virNWFilterInstantiateFilter(cb->conn, -+ ret = virNWFilterInstantiateFilter(cb->opaque, - vm->uuid, - net); - if (ret) -diff --git a/src/nwfilter/nwfilter_gentech_driver.h b/src/nwfilter/nwfilter_gentech_driver.h -index 4b47b4a..8528e2a 100644 ---- a/src/nwfilter/nwfilter_gentech_driver.h -+++ b/src/nwfilter/nwfilter_gentech_driver.h -@@ -39,23 +39,23 @@ enum instCase { - }; - - --int virNWFilterInstantiateFilter(virConnectPtr conn, -+int virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver, - const unsigned char *vmuuid, - const virDomainNetDefPtr net); --int virNWFilterUpdateInstantiateFilter(virConnectPtr conn, -+int virNWFilterUpdateInstantiateFilter(virNWFilterDriverStatePtr driver, - const unsigned char *vmuuid, - const virDomainNetDefPtr net, - bool *skipIface); - --int virNWFilterInstantiateFilterLate(const unsigned char *vmuuid, -+int virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver, -+ const unsigned char *vmuuid, - const char *ifname, - int ifindex, - const char *linkdev, - enum virDomainNetType nettype, - const virMacAddrPtr macaddr, - const char *filtername, -- virNWFilterHashTablePtr filterparams, -- virNWFilterDriverStatePtr driver); -+ virNWFilterHashTablePtr filterparams); - - int virNWFilterTeardownFilter(const virDomainNetDefPtr net); - -diff --git a/src/nwfilter/nwfilter_learnipaddr.c b/src/nwfilter/nwfilter_learnipaddr.c -index 7e67203..093158a 100644 ---- a/src/nwfilter/nwfilter_learnipaddr.c -+++ b/src/nwfilter/nwfilter_learnipaddr.c -@@ -612,15 +612,15 @@ learnIPAddressThread(void *arg) - "cache for interface %s"), inetaddr, req->ifname); - } - -- ret = virNWFilterInstantiateFilterLate(NULL, -+ ret = virNWFilterInstantiateFilterLate(req->driver, -+ NULL, - req->ifname, - req->ifindex, - req->linkdev, - req->nettype, - &req->macaddr, - req->filtername, -- req->filterparams, -- req->driver); -+ req->filterparams); - VIR_DEBUG("Result from applying firewall rules on " - "%s with IP addr %s : %d\n", req->ifname, inetaddr, ret); - } diff --git a/0005-Remove-use-of-virConnectPtr-from-all-remaining-nwfil.patch b/0005-Remove-use-of-virConnectPtr-from-all-remaining-nwfil.patch deleted file mode 100644 index 8b57d20..0000000 --- a/0005-Remove-use-of-virConnectPtr-from-all-remaining-nwfil.patch +++ /dev/null @@ -1,382 +0,0 @@ -From 1766db28533e2b5a96792aa0811e5364e0bb54d4 Mon Sep 17 00:00:00 2001 -From: "Daniel P. Berrange" -Date: Thu, 3 Oct 2013 14:07:00 +0100 -Subject: [PATCH] Remove use of virConnectPtr from all remaining nwfilter code - -The virConnectPtr is passed around loads of nwfilter code in -order to provide it as a parameter to the callback registered -by the virt drivers. None of the virt drivers use this param -though, so it serves no purpose. - -Avoiding the need to pass a virConnectPtr means that the -nwfilterStateReload method no longer needs to open a bogus -QEMU driver connection. This addresses a race condition that -can lead to a crash on startup. - -The nwfilter driver starts before the QEMU driver and registers -some callbacks with DBus to detect firewalld reload. If the -firewalld reload happens while the QEMU driver is still starting -up though, the nwfilterStateReload method will open a connection -to the partially initialized QEMU driver and cause a crash. - -Signed-off-by: Daniel P. Berrange ---- - src/conf/nwfilter_conf.c | 49 ++++++++++++++++-------------------------- - src/conf/nwfilter_conf.h | 14 +++++------- - src/lxc/lxc_driver.c | 3 +-- - src/nwfilter/nwfilter_driver.c | 42 ++++++++++++++---------------------- - src/qemu/qemu_driver.c | 3 +-- - src/uml/uml_driver.c | 3 +-- - 6 files changed, 43 insertions(+), 71 deletions(-) - -diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c -index 9927f7e..7152aae 100644 ---- a/src/conf/nwfilter_conf.c -+++ b/src/conf/nwfilter_conf.c -@@ -2744,8 +2744,7 @@ cleanup: - - - static int --_virNWFilterDefLoopDetect(virConnectPtr conn, -- virNWFilterObjListPtr nwfilters, -+_virNWFilterDefLoopDetect(virNWFilterObjListPtr nwfilters, - virNWFilterDefPtr def, - const char *filtername) - { -@@ -2769,7 +2768,7 @@ _virNWFilterDefLoopDetect(virConnectPtr conn, - obj = virNWFilterObjFindByName(nwfilters, - entry->include->filterref); - if (obj) { -- rc = _virNWFilterDefLoopDetect(conn, nwfilters, -+ rc = _virNWFilterDefLoopDetect(nwfilters, - obj->def, filtername); - - virNWFilterObjUnlock(obj); -@@ -2785,7 +2784,6 @@ _virNWFilterDefLoopDetect(virConnectPtr conn, - - /* - * virNWFilterDefLoopDetect: -- * @conn: pointer to virConnect object - * @nwfilters : the nwfilters to search - * @def : the filter definition that may add a loop and is to be tested - * -@@ -2795,11 +2793,10 @@ _virNWFilterDefLoopDetect(virConnectPtr conn, - * Returns 0 in case no loop was detected, -1 otherwise. - */ - static int --virNWFilterDefLoopDetect(virConnectPtr conn, -- virNWFilterObjListPtr nwfilters, -+virNWFilterDefLoopDetect(virNWFilterObjListPtr nwfilters, - virNWFilterDefPtr def) - { -- return _virNWFilterDefLoopDetect(conn, nwfilters, def, def->name); -+ return _virNWFilterDefLoopDetect(nwfilters, def, def->name); - } - - int nCallbackDriver; -@@ -2858,7 +2855,7 @@ static void *virNWFilterDomainFWUpdateOpaque; - * error. This should be called upon reloading of the driver. - */ - int --virNWFilterInstFiltersOnAllVMs(virConnectPtr conn) -+virNWFilterInstFiltersOnAllVMs(void) - { - size_t i; - struct domUpdateCBStruct cb = { -@@ -2868,15 +2865,14 @@ virNWFilterInstFiltersOnAllVMs(virConnectPtr conn) - }; - - for (i = 0; i < nCallbackDriver; i++) -- callbackDrvArray[i]->vmFilterRebuild(conn, -- virNWFilterDomainFWUpdateCB, -+ callbackDrvArray[i]->vmFilterRebuild(virNWFilterDomainFWUpdateCB, - &cb); - - return 0; - } - - static int --virNWFilterTriggerVMFilterRebuild(virConnectPtr conn) -+virNWFilterTriggerVMFilterRebuild(void) - { - size_t i; - int ret = 0; -@@ -2890,8 +2886,7 @@ virNWFilterTriggerVMFilterRebuild(virConnectPtr conn) - return -1; - - for (i = 0; i < nCallbackDriver; i++) { -- if (callbackDrvArray[i]->vmFilterRebuild(conn, -- virNWFilterDomainFWUpdateCB, -+ if (callbackDrvArray[i]->vmFilterRebuild(virNWFilterDomainFWUpdateCB, - &cb) < 0) - ret = -1; - } -@@ -2900,15 +2895,13 @@ virNWFilterTriggerVMFilterRebuild(virConnectPtr conn) - cb.step = STEP_TEAR_NEW; /* rollback */ - - for (i = 0; i < nCallbackDriver; i++) -- callbackDrvArray[i]->vmFilterRebuild(conn, -- virNWFilterDomainFWUpdateCB, -+ callbackDrvArray[i]->vmFilterRebuild(virNWFilterDomainFWUpdateCB, - &cb); - } else { - cb.step = STEP_TEAR_OLD; /* switch over */ - - for (i = 0; i < nCallbackDriver; i++) -- callbackDrvArray[i]->vmFilterRebuild(conn, -- virNWFilterDomainFWUpdateCB, -+ callbackDrvArray[i]->vmFilterRebuild(virNWFilterDomainFWUpdateCB, - &cb); - } - -@@ -2919,14 +2912,13 @@ virNWFilterTriggerVMFilterRebuild(virConnectPtr conn) - - - int --virNWFilterTestUnassignDef(virConnectPtr conn, -- virNWFilterObjPtr nwfilter) -+virNWFilterTestUnassignDef(virNWFilterObjPtr nwfilter) - { - int rc = 0; - - nwfilter->wantRemoved = 1; - /* trigger the update on VMs referencing the filter */ -- if (virNWFilterTriggerVMFilterRebuild(conn)) -+ if (virNWFilterTriggerVMFilterRebuild()) - rc = -1; - - nwfilter->wantRemoved = 0; -@@ -2965,8 +2957,7 @@ cleanup: - } - - virNWFilterObjPtr --virNWFilterObjAssignDef(virConnectPtr conn, -- virNWFilterObjListPtr nwfilters, -+virNWFilterObjAssignDef(virNWFilterObjListPtr nwfilters, - virNWFilterDefPtr def) - { - virNWFilterObjPtr nwfilter; -@@ -2985,7 +2976,7 @@ virNWFilterObjAssignDef(virConnectPtr conn, - virNWFilterObjUnlock(nwfilter); - } - -- if (virNWFilterDefLoopDetect(conn, nwfilters, def) < 0) { -+ if (virNWFilterDefLoopDetect(nwfilters, def) < 0) { - virReportError(VIR_ERR_OPERATION_FAILED, - "%s", _("filter would introduce a loop")); - return NULL; -@@ -3004,7 +2995,7 @@ virNWFilterObjAssignDef(virConnectPtr conn, - - nwfilter->newDef = def; - /* trigger the update on VMs referencing the filter */ -- if (virNWFilterTriggerVMFilterRebuild(conn)) { -+ if (virNWFilterTriggerVMFilterRebuild()) { - nwfilter->newDef = NULL; - virNWFilterUnlockFilterUpdates(); - virNWFilterObjUnlock(nwfilter); -@@ -3046,8 +3037,7 @@ virNWFilterObjAssignDef(virConnectPtr conn, - - - static virNWFilterObjPtr --virNWFilterObjLoad(virConnectPtr conn, -- virNWFilterObjListPtr nwfilters, -+virNWFilterObjLoad(virNWFilterObjListPtr nwfilters, - const char *file, - const char *path) - { -@@ -3066,7 +3056,7 @@ virNWFilterObjLoad(virConnectPtr conn, - return NULL; - } - -- if (!(nwfilter = virNWFilterObjAssignDef(conn, nwfilters, def))) { -+ if (!(nwfilter = virNWFilterObjAssignDef(nwfilters, def))) { - virNWFilterDefFree(def); - return NULL; - } -@@ -3082,8 +3072,7 @@ virNWFilterObjLoad(virConnectPtr conn, - - - int --virNWFilterLoadAllConfigs(virConnectPtr conn, -- virNWFilterObjListPtr nwfilters, -+virNWFilterLoadAllConfigs(virNWFilterObjListPtr nwfilters, - const char *configDir) - { - DIR *dir; -@@ -3111,7 +3100,7 @@ virNWFilterLoadAllConfigs(virConnectPtr conn, - if (!(path = virFileBuildPath(configDir, entry->d_name, NULL))) - continue; - -- nwfilter = virNWFilterObjLoad(conn, nwfilters, entry->d_name, path); -+ nwfilter = virNWFilterObjLoad(nwfilters, entry->d_name, path); - if (nwfilter) - virNWFilterObjUnlock(nwfilter); - -diff --git a/src/conf/nwfilter_conf.h b/src/conf/nwfilter_conf.h -index e470615..29906f1 100644 ---- a/src/conf/nwfilter_conf.h -+++ b/src/conf/nwfilter_conf.h -@@ -687,12 +687,10 @@ int virNWFilterObjSaveDef(virNWFilterDriverStatePtr driver, - - int virNWFilterObjDeleteDef(virNWFilterObjPtr nwfilter); - --virNWFilterObjPtr virNWFilterObjAssignDef(virConnectPtr conn, -- virNWFilterObjListPtr nwfilters, -+virNWFilterObjPtr virNWFilterObjAssignDef(virNWFilterObjListPtr nwfilters, - virNWFilterDefPtr def); - --int virNWFilterTestUnassignDef(virConnectPtr conn, -- virNWFilterObjPtr nwfilter); -+int virNWFilterTestUnassignDef(virNWFilterObjPtr nwfilter); - - virNWFilterDefPtr virNWFilterDefParseNode(xmlDocPtr xml, - xmlNodePtr root); -@@ -706,8 +704,7 @@ int virNWFilterSaveXML(const char *configDir, - int virNWFilterSaveConfig(const char *configDir, - virNWFilterDefPtr def); - --int virNWFilterLoadAllConfigs(virConnectPtr conn, -- virNWFilterObjListPtr nwfilters, -+int virNWFilterLoadAllConfigs(virNWFilterObjListPtr nwfilters, - const char *configDir); - - char *virNWFilterConfigFile(const char *dir, -@@ -725,11 +722,10 @@ void virNWFilterUnlockFilterUpdates(void); - int virNWFilterConfLayerInit(virDomainObjListIterator domUpdateCB, void *opaque); - void virNWFilterConfLayerShutdown(void); - --int virNWFilterInstFiltersOnAllVMs(virConnectPtr conn); -+int virNWFilterInstFiltersOnAllVMs(void); - - --typedef int (*virNWFilterRebuild)(virConnectPtr conn, -- virDomainObjListIterator domUpdateCB, -+typedef int (*virNWFilterRebuild)(virDomainObjListIterator domUpdateCB, - void *data); - typedef void (*virNWFilterVoidCall)(void); - -diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c -index 8b13f84..e3a34d6 100644 ---- a/src/lxc/lxc_driver.c -+++ b/src/lxc/lxc_driver.c -@@ -84,8 +84,7 @@ virLXCDriverPtr lxc_driver = NULL; - - /* callbacks for nwfilter */ - static int --lxcVMFilterRebuild(virConnectPtr conn ATTRIBUTE_UNUSED, -- virDomainObjListIterator iter, void *data) -+lxcVMFilterRebuild(virDomainObjListIterator iter, void *data) - { - return virDomainObjListForEach(lxc_driver->domains, iter, data); - } -diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c -index 6e20e03..d25c6f2 100644 ---- a/src/nwfilter/nwfilter_driver.c -+++ b/src/nwfilter/nwfilter_driver.c -@@ -235,8 +235,7 @@ nwfilterStateInitialize(bool privileged, - - VIR_FREE(base); - -- if (virNWFilterLoadAllConfigs(NULL, -- &driverState->nwfilters, -+ if (virNWFilterLoadAllConfigs(&driverState->nwfilters, - driverState->configDir) < 0) - goto error; - -@@ -272,37 +271,28 @@ err_free_driverstate: - * files and update its state - */ - static int --nwfilterStateReload(void) { -- virConnectPtr conn; -- -- if (!driverState) { -+nwfilterStateReload(void) -+{ -+ if (!driverState) - return -1; -- } - - if (!driverState->privileged) - return 0; - -- conn = virConnectOpen("qemu:///system"); -- -- if (conn) { -- virNWFilterDHCPSnoopEnd(NULL); -- /* shut down all threads -- they will be restarted if necessary */ -- virNWFilterLearnThreadsTerminate(true); -- -- nwfilterDriverLock(driverState); -- virNWFilterCallbackDriversLock(); -+ virNWFilterDHCPSnoopEnd(NULL); -+ /* shut down all threads -- they will be restarted if necessary */ -+ virNWFilterLearnThreadsTerminate(true); - -- virNWFilterLoadAllConfigs(conn, -- &driverState->nwfilters, -- driverState->configDir); -+ nwfilterDriverLock(driverState); -+ virNWFilterCallbackDriversLock(); - -- virNWFilterCallbackDriversUnlock(); -- nwfilterDriverUnlock(driverState); -+ virNWFilterLoadAllConfigs(&driverState->nwfilters, -+ driverState->configDir); - -- virNWFilterInstFiltersOnAllVMs(conn); -+ virNWFilterCallbackDriversUnlock(); -+ nwfilterDriverUnlock(driverState); - -- virConnectClose(conn); -- } -+ virNWFilterInstFiltersOnAllVMs(); - - return 0; - } -@@ -573,7 +563,7 @@ nwfilterDefineXML(virConnectPtr conn, - if (virNWFilterDefineXMLEnsureACL(conn, def) < 0) - goto cleanup; - -- if (!(nwfilter = virNWFilterObjAssignDef(conn, &driver->nwfilters, def))) -+ if (!(nwfilter = virNWFilterObjAssignDef(&driver->nwfilters, def))) - goto cleanup; - - if (virNWFilterObjSaveDef(driver, nwfilter, def) < 0) { -@@ -617,7 +607,7 @@ nwfilterUndefine(virNWFilterPtr obj) { - if (virNWFilterUndefineEnsureACL(obj->conn, nwfilter->def) < 0) - goto cleanup; - -- if (virNWFilterTestUnassignDef(obj->conn, nwfilter) < 0) { -+ if (virNWFilterTestUnassignDef(nwfilter) < 0) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", - _("nwfilter is in use")); -diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c -index e8bc04d..068d29f 100644 ---- a/src/qemu/qemu_driver.c -+++ b/src/qemu/qemu_driver.c -@@ -177,8 +177,7 @@ static void - qemuVMDriverUnlock(void) {} - - static int --qemuVMFilterRebuild(virConnectPtr conn ATTRIBUTE_UNUSED, -- virDomainObjListIterator iter, void *data) -+qemuVMFilterRebuild(virDomainObjListIterator iter, void *data) - { - return virDomainObjListForEach(qemu_driver->domains, iter, data); - } -diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c -index 9ca352f..eb02542 100644 ---- a/src/uml/uml_driver.c -+++ b/src/uml/uml_driver.c -@@ -148,8 +148,7 @@ static int umlMonitorCommand(const struct uml_driver *driver, - static struct uml_driver *uml_driver = NULL; - - static int --umlVMFilterRebuild(virConnectPtr conn ATTRIBUTE_UNUSED, -- virDomainObjListIterator iter, void *data) -+umlVMFilterRebuild(virDomainObjListIterator iter, void *data) - { - return virDomainObjListForEach(uml_driver->domains, iter, data); - } diff --git a/0006-qemu-cgroup-Fix-crash-if-starting-nographics-guest.patch b/0006-qemu-cgroup-Fix-crash-if-starting-nographics-guest.patch deleted file mode 100644 index 8b688a1..0000000 --- a/0006-qemu-cgroup-Fix-crash-if-starting-nographics-guest.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 009332c5530a3f3419578b62b44a98ff8de31ca2 Mon Sep 17 00:00:00 2001 -From: Cole Robinson -Date: Tue, 1 Oct 2013 07:55:19 -0400 -Subject: [PATCH] qemu: cgroup: Fix crash if starting nographics guest - -We can dereference graphics[0] even if guest has no graphics device -configured. I screwed this up in a216e6487255d3b65d97c7ec1fa5da63dbced902 - -https://bugzilla.redhat.com/show_bug.cgi?id=1014088 -(cherry picked from commit a924d9d083c215df6044387057c501d9aa338b96) ---- - src/qemu/qemu_cgroup.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c -index f95c7f2..ace7e35 100644 ---- a/src/qemu/qemu_cgroup.c -+++ b/src/qemu/qemu_cgroup.c -@@ -490,9 +490,10 @@ qemuSetupDevicesCgroup(virQEMUDriverPtr driver, - - if (vm->def->nsounds && - ((!vm->def->ngraphics && cfg->nogfxAllowHostAudio) || -- ((vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC && -+ (vm->def->graphics && -+ ((vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC && - cfg->vncAllowHostAudio) || -- (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL)))) { -+ (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL))))) { - rv = virCgroupAllowDeviceMajor(priv->cgroup, 'c', DEVICE_SND_MAJOR, - VIR_CGROUP_DEVICE_RW); - virDomainAuditCgroupMajor(vm, priv->cgroup, "allow", DEVICE_SND_MAJOR, diff --git a/libvirt.spec b/libvirt.spec index 7f9530d..3910797 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -366,8 +366,8 @@ Summary: Library providing a simple virtualization API Name: libvirt -Version: 1.1.3 -Release: 2%{?dist}%{?extra_release} +Version: 1.1.4 +Release: 1%{?dist}%{?extra_release} License: LGPLv2+ Group: Development/Libraries BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root @@ -378,16 +378,6 @@ URL: http://libvirt.org/ %endif Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz -# Allow QoS change with update-device (bz #1014200) -Patch0001: 0001-qemu_hotplug-Allow-QoS-update-in-qemuDomainChangeNet.patch -Patch0002: 0002-virNetDevBandwidthEqual-Make-it-more-robust.patch -# Fix nwfilter crash during firewalld install (bz #1014762) -Patch0003: 0003-Remove-virConnectPtr-arg-from-virNWFilterDefParse.patch -Patch0004: 0004-Don-t-pass-virConnectPtr-in-nwfilter-struct-domUpdat.patch -Patch0005: 0005-Remove-use-of-virConnectPtr-from-all-remaining-nwfil.patch -# Fix crash with nographics (bz #1014088) -Patch0006: 0006-qemu-cgroup-Fix-crash-if-starting-nographics-guest.patch - %if %{with_libvirtd} Requires: libvirt-daemon = %{version}-%{release} %if %{with_network} @@ -667,31 +657,6 @@ Requires: avahi Requires: avahi-libs %endif %endif - %if %{with_network} -Requires: dnsmasq >= 2.41 -Requires: radvd - %endif - %if %{with_network} || %{with_nwfilter} -Requires: iptables -Requires: iptables-ipv6 - %endif - %if %{with_nwfilter} -Requires: ebtables - %endif - %if %{with_netcf} && (0%{?fedora} >= 18 || 0%{?rhel} >= 7) -Requires: netcf-libs >= 0.2.2 - %endif -# needed for device enumeration - %if %{with_hal} -Requires: hal - %endif - %if %{with_udev} - %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 -Requires: systemd >= 185 - %else -Requires: udev >= 145 - %endif - %endif %if %{with_polkit} %if 0%{?fedora} >= 12 || 0%{?rhel} >=6 Requires: polkit >= 0.93 @@ -699,50 +664,6 @@ Requires: polkit >= 0.93 Requires: PolicyKit >= 0.6 %endif %endif - %if %{with_storage_fs} -Requires: nfs-utils -# For mkfs -Requires: util-linux -# For glusterfs - %if 0%{?fedora} >= 11 -Requires: glusterfs-client >= 2.0.1 - %endif - %endif - %if %{with_qemu} -# From QEMU RPMs -Requires: /usr/bin/qemu-img -# For image compression -Requires: gzip -Requires: bzip2 -Requires: lzop -Requires: xz - %else - %if %{with_xen} -# From Xen RPMs -Requires: /usr/sbin/qcow-create - %endif - %endif - %if %{with_storage_lvm} -# For LVM drivers -Requires: lvm2 - %endif - %if %{with_storage_iscsi} -# For ISCSI driver -Requires: iscsi-initiator-utils - %endif - %if %{with_storage_disk} -# For disk driver -Requires: parted -Requires: device-mapper - %endif - %if %{with_storage_mpath} -# For multipath support -Requires: device-mapper - %endif - %if %{with_storage_sheepdog} -# For Sheepdog support -Requires: sheepdog - %endif %if %{with_cgconfig} Requires: libcgroup %endif @@ -798,6 +719,10 @@ Network filter configuration files for cleaning guest traffic Summary: Network driver plugin for the libvirtd daemon Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} +Requires: dnsmasq >= 2.41 +Requires: radvd +Requires: iptables +Requires: iptables-ipv6 %description daemon-driver-network The network driver plugin for the libvirtd daemon, providing @@ -811,6 +736,9 @@ bridge capabilities. Summary: Nwfilter driver plugin for the libvirtd daemon Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} +Requires: iptables +Requires: iptables-ipv6 +Requires: ebtables %description daemon-driver-nwfilter The nwfilter driver plugin for the libvirtd daemon, providing @@ -824,6 +752,17 @@ iptables and ip6tables capabilities Summary: Nodedev driver plugin for the libvirtd daemon Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} +# needed for device enumeration + %if %{with_hal} +Requires: hal + %endif + %if %{with_udev} + %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 +Requires: systemd >= 185 + %else +Requires: udev >= 145 + %endif + %endif %description daemon-driver-nodedev The nodedev driver plugin for the libvirtd daemon, providing @@ -837,6 +776,9 @@ capabilities. Summary: Interface driver plugin for the libvirtd daemon Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} + %if %{with_netcf} && (0%{?fedora} >= 18 || 0%{?rhel} >= 7) +Requires: netcf-libs >= 0.2.2 + %endif %description daemon-driver-interface The interface driver plugin for the libvirtd daemon, providing @@ -860,6 +802,45 @@ an implementation of the secret key APIs. Summary: Storage driver plugin for the libvirtd daemon Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} + %if %{with_storage_fs} +Requires: nfs-utils +# For mkfs +Requires: util-linux +# For glusterfs + %if 0%{?fedora} >= 11 +Requires: glusterfs-client >= 2.0.1 + %endif + %endif + %if %{with_storage_lvm} +# For LVM drivers +Requires: lvm2 + %endif + %if %{with_storage_iscsi} +# For ISCSI driver +Requires: iscsi-initiator-utils + %endif + %if %{with_storage_disk} +# For disk driver +Requires: parted +Requires: device-mapper + %endif + %if %{with_storage_mpath} +# For multipath support +Requires: device-mapper + %endif + %if %{with_storage_sheepdog} +# For Sheepdog support +Requires: sheepdog + %endif + %if %{with_qemu} +# From QEMU RPMs +Requires: /usr/bin/qemu-img + %else + %if %{with_xen} +# From Xen RPMs +Requires: /usr/sbin/qcow-create + %endif + %endif %description daemon-driver-storage The storage driver plugin for the libvirtd daemon, providing @@ -875,6 +856,12 @@ Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} # There really is a hard cross-driver dependency here Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: /usr/bin/qemu-img +# For image compression +Requires: gzip +Requires: bzip2 +Requires: lzop +Requires: xz %description daemon-driver-qemu The qemu driver plugin for the libvirtd daemon, providing @@ -1117,6 +1104,18 @@ Requires: cyrus-sasl-md5 Shared libraries and client binaries needed to access to the virtualization capabilities of recent versions of Linux (and other OSes). +%if %{with_lxc} +%package login-shell +Summary: Login shell for connecting users to an LXC container +Group: Development/Libraries +Requires: %{name}-client = %{version}-%{release} + +%description login-shell +Provides the set-uid virt-login-shell binary that is used to +connect a user to an LXC container when they login, by switching +namespaces. +%endif + %package devel Summary: Libraries, includes, etc. to compile with the libvirt library Group: Development/Libraries @@ -1162,16 +1161,6 @@ of recent versions of Linux (and other OSes). %prep %setup -q -# Allow QoS change with update-device (bz #1014200) -%patch0001 -p1 -%patch0002 -p1 -# Fix nwfilter crash during firewalld install (bz #1014762) -%patch0003 -p1 -%patch0004 -p1 -%patch0005 -p1 -# Fix crash with nographics (bz #1014088) -%patch0006 -p1 - %build %if ! %{with_xen} %define _without_xen --without-xen @@ -2035,23 +2024,14 @@ fi %doc COPYING COPYING.LESSER %config(noreplace) %{_sysconfdir}/libvirt/libvirt.conf -%if %{with_lxc} -%config(noreplace) %{_sysconfdir}/libvirt/virt-login-shell.conf -%endif %{_mandir}/man1/virsh.1* %{_mandir}/man1/virt-xml-validate.1* %{_mandir}/man1/virt-pki-validate.1* %{_mandir}/man1/virt-host-validate.1* -%if %{with_lxc} -%{_mandir}/man1/virt-login-shell.1* -%endif %{_bindir}/virsh %{_bindir}/virt-xml-validate %{_bindir}/virt-pki-validate %{_bindir}/virt-host-validate -%if %{with_lxc} -%attr(4755, root, root) %{_bindir}/virt-login-shell -%endif %{_libdir}/lib*.so.* %if %{with_dtrace} @@ -2095,6 +2075,13 @@ fi %config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf %endif +%if %{with_lxc} +%files login-shell +%attr(4755, root, root) %{_bindir}/virt-login-shell +%config(noreplace) %{_sysconfdir}/libvirt/virt-login-shell.conf +%{_mandir}/man1/virt-login-shell.1* +%endif + %files devel %defattr(-, root, root) @@ -2131,6 +2118,12 @@ fi %endif %changelog +* Mon Nov 4 2013 Daniel Veillard - 1.1.4-1 +- upstream release of 1.1.4 +- Add support for AArch64 architecture +- Various improvements on test code and test driver +- a lot of bug fixes and various improvements + * Sun Oct 06 2013 Cole Robinson - 1.1.3-2 - Allow QoS change with update-device (bz #1014200) - Fix nwfilter crash during firewalld install (bz #1014762) diff --git a/sources b/sources index ca601f5..4584f2f 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ 1835bbfa492099bce12e2934870e5611 libvirt-1.1.2.tar.gz b0dfe373ebe0c588b42a28c14d36a3e6 libvirt-1.1.3.tar.gz +0b21e97ad5d3c27d18806896e16ef82b libvirt-1.1.4.tar.gz