Hello community, here is the log from the commit of package libvirt for openSUSE:Factory checked in at 2018-10-01 09:07:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libvirt (Old) and /work/SRC/openSUSE:Factory/.libvirt.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libvirt" Mon Oct 1 09:07:15 2018 rev:265 rq:637737 version:4.7.0 Changes: -------- --- /work/SRC/openSUSE:Factory/libvirt/libvirt.changes 2018-08-27 13:46:06.396273738 +0200 +++ /work/SRC/openSUSE:Factory/.libvirt.new/libvirt.changes 2018-10-01 09:07:41.195775889 +0200 @@ -1,0 +2,39 @@ +Mon Sep 24 10:42:27 UTC 2018 - Jan Engelhardt <jeng...@inai.de> + +- Fix RPM groups. Remove idempotent %if..%endif guards. +- Remove redundant %clean section. + +------------------------------------------------------------------- +Wed Sep 19 22:01:11 UTC 2018 - James Fehlig <jfeh...@suse.com> + +- libxl: fix VM migration on busy hosts + 60b4fd90-libxl-rm-vm-finish-phase.patch, + e39c66d3-libxl-fix-p2p-migration.patch, + 47da84e0-libxl-fix-job-handling-migsrc.patch, + 0149464a-libxl-fix-job-handling-migdst.patch, + 5ea2abb3-libxl-join-mig-rcv-thread.patch + bsc#1108086 + +------------------------------------------------------------------- +Wed Sep 5 04:08:21 UTC 2018 - jfeh...@suse.com + +- Update to libvirt 4.7.0 + - Many incremental improvements and bug fixes, see + http://libvirt.org/news.html + - Dropped patches: + 9ed59012--revert-jansson1.patch, + 54f2b5e3-revert-jansson2.patch, + b56950fd-revert-jansson3.patch, + 6c3d66ac-revert-jansson4.patch, + 8e373e6d-revert-jansson5.patch, + 6f99de31-revert-jansson6.patch, + f204cf51-revert-jansson7.patch, + 5a58b5ed-revert-jansson8.patch, + 63f6e0e9-revert-jansson9.patch, + 8687eba-revert-jansson10.patch, + e96e71d8-revert-jansson11.patch, + d99a8959-revert-jansson12.patch, + 074a7e14-revert-jansson13.patch, + 86db0db9-revert-jansson14.patch + +------------------------------------------------------------------- Old: ---- 074a7e14-revert-jansson13.patch 54f2b5e3-revert-jansson2.patch 5a58b5ed-revert-jansson8.patch 63f6e0e9-revert-jansson9.patch 6c3d66ac-revert-jansson4.patch 6f99de31-revert-jansson6.patch 8687eba-revert-jansson10.patch 86db0db9-revert-jansson14.patch 8e373e6d-revert-jansson5.patch 9ed59012--revert-jansson1.patch b56950fd-revert-jansson3.patch d99a8959-revert-jansson12.patch e96e71d8-revert-jansson11.patch f204cf51-revert-jansson7.patch libvirt-4.6.0.tar.xz libvirt-4.6.0.tar.xz.asc New: ---- 0149464a-libxl-fix-job-handling-migdst.patch 47da84e0-libxl-fix-job-handling-migsrc.patch 5ea2abb3-libxl-join-mig-rcv-thread.patch 60b4fd90-libxl-rm-vm-finish-phase.patch e39c66d3-libxl-fix-p2p-migration.patch libvirt-4.7.0.tar.xz libvirt-4.7.0.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libvirt.spec ++++++ ++++ 624 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/libvirt/libvirt.spec ++++ and /work/SRC/openSUSE:Factory/.libvirt.new/libvirt.spec ++++++ 0001-Extract-stats-functions-from-the-qemu-driver.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.431773120 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.431773120 +0200 @@ -18,10 +18,10 @@ create mode 100644 src/conf/domain_stats.c create mode 100644 src/conf/domain_stats.h -Index: libvirt-4.6.0/src/conf/domain_stats.c +Index: libvirt-4.7.0/src/conf/domain_stats.c =================================================================== --- /dev/null -+++ libvirt-4.6.0/src/conf/domain_stats.c ++++ libvirt-4.7.0/src/conf/domain_stats.c @@ -0,0 +1,139 @@ +/* + * domain_stats.c: domain stats extraction helpers @@ -162,10 +162,10 @@ +} + +#undef STATS_ADD_NET_PARAM -Index: libvirt-4.6.0/src/conf/domain_stats.h +Index: libvirt-4.7.0/src/conf/domain_stats.h =================================================================== --- /dev/null -+++ libvirt-4.6.0/src/conf/domain_stats.h ++++ libvirt-4.7.0/src/conf/domain_stats.h @@ -0,0 +1,64 @@ +/* + * domain_stats.h: domain stats extraction helpers @@ -231,11 +231,11 @@ + int *maxparams); + +#endif /* __DOMAIN_STATS_H */ -Index: libvirt-4.6.0/src/libvirt_private.syms +Index: libvirt-4.7.0/src/libvirt_private.syms =================================================================== ---- libvirt-4.6.0.orig/src/libvirt_private.syms -+++ libvirt-4.6.0/src/libvirt_private.syms -@@ -647,6 +647,9 @@ virDomainConfNWFilterInstantiate; +--- libvirt-4.7.0.orig/src/libvirt_private.syms ++++ libvirt-4.7.0/src/libvirt_private.syms +@@ -650,6 +650,9 @@ virDomainConfNWFilterInstantiate; virDomainConfNWFilterTeardown; virDomainConfVMNWFilterTeardown; @@ -245,18 +245,18 @@ # conf/interface_conf.h virInterfaceDefFormat; -@@ -1537,6 +1540,7 @@ virCgroupGetMemoryUsage; +@@ -1540,6 +1543,7 @@ virCgroupGetMemoryUsage; virCgroupGetMemSwapHardLimit; virCgroupGetMemSwapUsage; virCgroupGetPercpuStats; +virCgroupGetStatsCpu; virCgroupHasController; virCgroupHasEmptyTasks; - virCgroupKill; -Index: libvirt-4.6.0/src/qemu/qemu_driver.c + virCgroupKillPainfully; +Index: libvirt-4.7.0/src/qemu/qemu_driver.c =================================================================== ---- libvirt-4.6.0.orig/src/qemu/qemu_driver.c -+++ libvirt-4.6.0/src/qemu/qemu_driver.c +--- libvirt-4.7.0.orig/src/qemu/qemu_driver.c ++++ libvirt-4.7.0/src/qemu/qemu_driver.c @@ -74,6 +74,7 @@ #include "virarptable.h" #include "viruuid.h" @@ -265,7 +265,7 @@ #include "domain_audit.h" #include "node_device_conf.h" #include "virpci.h" -@@ -19597,21 +19598,7 @@ qemuDomainGetStatsState(virQEMUDriverPtr +@@ -19641,21 +19642,7 @@ qemuDomainGetStatsState(virQEMUDriverPtr int *maxparams, unsigned int privflags ATTRIBUTE_UNUSED) { @@ -288,7 +288,7 @@ } -@@ -19634,37 +19621,7 @@ qemuDomainGetStatsCpu(virQEMUDriverPtr d +@@ -19678,37 +19665,7 @@ qemuDomainGetStatsCpu(virQEMUDriverPtr d unsigned int privflags ATTRIBUTE_UNUSED) { qemuDomainObjPrivatePtr priv = dom->privateData; @@ -327,7 +327,7 @@ } static int -@@ -19844,44 +19801,6 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr +@@ -19888,44 +19845,6 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr return ret; } @@ -372,7 +372,7 @@ static int qemuDomainGetStatsInterface(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, virDomainObjPtr dom, -@@ -19889,68 +19808,9 @@ qemuDomainGetStatsInterface(virQEMUDrive +@@ -19933,68 +19852,9 @@ qemuDomainGetStatsInterface(virQEMUDrive int *maxparams, unsigned int privflags ATTRIBUTE_UNUSED) { @@ -442,20 +442,20 @@ #define QEMU_ADD_BLOCK_PARAM_UI(record, maxparams, num, name, value) \ do { \ char param_name[VIR_TYPED_PARAM_FIELD_LENGTH]; \ -@@ -20072,10 +19932,10 @@ qemuDomainGetStatsOneBlock(virQEMUDriver - if (disk->info.alias) - alias = qemuDomainStorageAlias(disk->info.alias, backing_idx); - -- QEMU_ADD_NAME_PARAM(record, maxparams, "block", "name", block_idx, -+ VIR_DOMAIN_STATS_ADD_NAME_PARAM(record, maxparams, "block", "name", block_idx, - disk->dst); +@@ -20227,10 +20087,10 @@ qemuDomainGetStatsBlockExportHeader(virD + { + int ret = -1; + +- QEMU_ADD_NAME_PARAM(records, nrecords, "block", "name", recordnr, disk->dst); ++ VIR_DOMAIN_STATS_ADD_NAME_PARAM(records, nrecords, "block", "name", recordnr, disk->dst); + if (virStorageSourceIsLocalStorage(src) && src->path) -- QEMU_ADD_NAME_PARAM(record, maxparams, "block", "path", -+ VIR_DOMAIN_STATS_ADD_NAME_PARAM(record, maxparams, "block", "path", - block_idx, src->path); - if (backing_idx) - QEMU_ADD_BLOCK_PARAM_UI(record, maxparams, block_idx, "backingIndex", -@@ -20191,7 +20051,7 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr +- QEMU_ADD_NAME_PARAM(records, nrecords, "block", "path", recordnr, src->path); ++ VIR_DOMAIN_STATS_ADD_NAME_PARAM(records, nrecords, "block", "path", recordnr, src->path); + if (src->id) + QEMU_ADD_BLOCK_PARAM_UI(records, nrecords, recordnr, "backingIndex", + src->id); +@@ -20370,7 +20230,7 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr * after the iteration than it is to iterate twice; but we still * want count listed first. */ count_index = record->nparams; @@ -463,8 +463,8 @@ + VIR_DOMAIN_STATS_ADD_COUNT_PARAM(record, maxparams, "block", 0); for (i = 0; i < dom->def->ndisks; i++) { - virDomainDiskDefPtr disk = dom->def->disks[i]; -@@ -20225,10 +20085,6 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr + if (qemuDomainGetStatsBlockExportDisk(dom->def->disks[i], stats, nodestats, +@@ -20395,10 +20255,6 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr #undef QEMU_ADD_BLOCK_PARAM_ULL @@ -475,11 +475,11 @@ static int qemuDomainGetStatsPerfOneEvent(virPerfPtr perf, virPerfEventType type, -Index: libvirt-4.6.0/src/util/vircgroup.c +Index: libvirt-4.7.0/src/util/vircgroup.c =================================================================== ---- libvirt-4.6.0.orig/src/util/vircgroup.c -+++ libvirt-4.6.0/src/util/vircgroup.c -@@ -3956,6 +3956,44 @@ virCgroupControllerAvailable(int control +--- libvirt-4.7.0.orig/src/util/vircgroup.c ++++ libvirt-4.7.0/src/util/vircgroup.c +@@ -4037,6 +4037,44 @@ virCgroupControllerAvailable(int control return ret; } @@ -524,7 +524,7 @@ #else /* !VIR_CGROUP_SUPPORTED */ bool -@@ -4733,6 +4771,14 @@ virCgroupControllerAvailable(int control +@@ -4799,6 +4837,14 @@ virCgroupControllerAvailable(int control { return false; } @@ -539,11 +539,11 @@ #endif /* !VIR_CGROUP_SUPPORTED */ -Index: libvirt-4.6.0/src/util/vircgroup.h +Index: libvirt-4.7.0/src/util/vircgroup.h =================================================================== ---- libvirt-4.6.0.orig/src/util/vircgroup.h -+++ libvirt-4.6.0/src/util/vircgroup.h -@@ -297,4 +297,9 @@ int virCgroupSetOwner(virCgroupPtr cgrou +--- libvirt-4.7.0.orig/src/util/vircgroup.h ++++ libvirt-4.7.0/src/util/vircgroup.h +@@ -286,4 +286,9 @@ int virCgroupSetOwner(virCgroupPtr cgrou int virCgroupHasEmptyTasks(virCgroupPtr cgroup, int controller); bool virCgroupControllerAvailable(int controller); @@ -553,10 +553,10 @@ + int *maxparams); + #endif /* __VIR_CGROUP_H__ */ -Index: libvirt-4.6.0/src/conf/Makefile.inc.am +Index: libvirt-4.7.0/src/conf/Makefile.inc.am =================================================================== ---- libvirt-4.6.0.orig/src/conf/Makefile.inc.am -+++ libvirt-4.6.0/src/conf/Makefile.inc.am +--- libvirt-4.7.0.orig/src/conf/Makefile.inc.am ++++ libvirt-4.7.0/src/conf/Makefile.inc.am @@ -20,6 +20,8 @@ DOMAIN_CONF_SOURCES = \ conf/domain_audit.h \ conf/domain_nwfilter.c \ ++++++ 0001-libxl-add-support-for-BlockResize-API.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.439773113 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.439773113 +0200 @@ -19,10 +19,10 @@ src/libxl/libxl_driver.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) -Index: libvirt-4.6.0/src/libxl/libxl_driver.c +Index: libvirt-4.7.0/src/libxl/libxl_driver.c =================================================================== ---- libvirt-4.6.0.orig/src/libxl/libxl_driver.c -+++ libvirt-4.6.0/src/libxl/libxl_driver.c +--- libvirt-4.7.0.orig/src/libxl/libxl_driver.c ++++ libvirt-4.7.0/src/libxl/libxl_driver.c @@ -5119,6 +5119,97 @@ libxlDomainMemoryStats(virDomainPtr dom, #undef LIBXL_SET_MEMSTAT @@ -121,7 +121,7 @@ static int libxlDomainGetJobInfo(virDomainPtr dom, virDomainJobInfoPtr info) -@@ -6504,6 +6595,7 @@ static virHypervisorDriver libxlHypervis +@@ -6497,6 +6588,7 @@ static virHypervisorDriver libxlHypervis #endif .nodeGetFreeMemory = libxlNodeGetFreeMemory, /* 0.9.0 */ .nodeGetCellsFreeMemory = libxlNodeGetCellsFreeMemory, /* 1.1.1 */ ++++++ 0002-lxc-implement-connectGetAllDomainStats.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.447773107 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.447773107 +0200 @@ -9,10 +9,10 @@ src/lxc/lxc_driver.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) -Index: libvirt-4.6.0/src/lxc/lxc_driver.c +Index: libvirt-4.7.0/src/lxc/lxc_driver.c =================================================================== ---- libvirt-4.6.0.orig/src/lxc/lxc_driver.c -+++ libvirt-4.6.0/src/lxc/lxc_driver.c +--- libvirt-4.7.0.orig/src/lxc/lxc_driver.c ++++ libvirt-4.7.0/src/lxc/lxc_driver.c @@ -79,6 +79,7 @@ #include "viraccessapichecklxc.h" #include "virhostdev.h" ++++++ 0149464a-libxl-fix-job-handling-migdst.patch ++++++ commit 0149464afc7100f048a2468e40e84b6a50aeb3a3 Author: Jim Fehlig <jfeh...@suse.com> Date: Wed Aug 29 11:11:00 2018 -0600 libxl: fix job handling across migration phases on dst The libxlDomainMigrationDst* functions are a bit flawed in their handling of modify jobs. A job begins when the destination host begins receiving the incoming VM and ends after the VM is started. The finish phase contains another BeginJob/EndJob sequence. This patch changes the logic to begin a job for the incoming VM in the prepare phase and end the job in the finish phase. Signed-off-by: Jim Fehlig <jfeh...@suse.com> ACKed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-4.7.0/src/libxl/libxl_driver.c =================================================================== --- libvirt-4.7.0.orig/src/libxl/libxl_driver.c +++ libvirt-4.7.0/src/libxl/libxl_driver.c @@ -6020,15 +6020,8 @@ libxlDomainMigrateFinish3Params(virConne return NULL; } - if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) { - virDomainObjEndAPI(&vm); - return NULL; - } - ret = libxlDomainMigrationDstFinish(dconn, vm, flags, cancelled); - libxlDomainObjEndJob(driver, vm); - virDomainObjEndAPI(&vm); return ret; Index: libvirt-4.7.0/src/libxl/libxl_migration.c =================================================================== --- libvirt-4.7.0.orig/src/libxl/libxl_migration.c +++ libvirt-4.7.0/src/libxl/libxl_migration.c @@ -266,9 +266,6 @@ libxlDoMigrateDstReceive(void *opaque) size_t i; virObjectRef(vm); - virObjectLock(vm); - if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) - goto cleanup; /* * Always start the domain paused. If needed, unpause in the @@ -288,10 +285,6 @@ libxlDoMigrateDstReceive(void *opaque) args->nsocks = 0; VIR_FORCE_CLOSE(recvfd); virObjectUnref(args); - - libxlDomainObjEndJob(driver, vm); - - cleanup: virDomainObjEndAPI(&vm); } @@ -583,6 +576,13 @@ libxlDomainMigrationDstPrepareTunnel3(vi goto error; *def = NULL; + /* + * Unless an error is encountered in this function, the job will + * be terminated in the finish phase. + */ + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto error; + priv = vm->privateData; if (taint_hook) { @@ -595,18 +595,18 @@ libxlDomainMigrationDstPrepareTunnel3(vi * stream -> pipe -> recvfd of libxlDomainStartRestore */ if (pipe(dataFD) < 0) - goto error; + goto endjob; /* Stream data will be written to pipeIn */ if (virFDStreamOpen(st, dataFD[1]) < 0) - goto error; + goto endjob; dataFD[1] = -1; /* 'st' owns the FD now & will close it */ if (libxlMigrationDstArgsInitialize() < 0) - goto error; + goto endjob; if (!(args = virObjectNew(libxlMigrationDstArgsClass))) - goto error; + goto endjob; args->conn = virObjectRef(dconn); args->vm = virObjectRef(vm); @@ -620,12 +620,15 @@ libxlDomainMigrationDstPrepareTunnel3(vi if (virThreadCreate(&thread, false, libxlDoMigrateDstReceive, args) < 0) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Failed to create thread for receiving migration data")); - goto error; + goto endjob; } ret = 0; goto done; + endjob: + libxlDomainObjEndJob(driver, vm); + error: libxlMigrationCookieFree(mig); VIR_FORCE_CLOSE(dataFD[1]); @@ -679,6 +682,13 @@ libxlDomainMigrationDstPrepare(virConnec goto error; *def = NULL; + /* + * Unless an error is encountered in this function, the job will + * be terminated in the finish phase. + */ + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto error; + priv = vm->privateData; if (taint_hook) { @@ -689,27 +699,27 @@ libxlDomainMigrationDstPrepare(virConnec /* Create socket connection to receive migration data */ if (!uri_in) { if ((hostname = virGetHostname()) == NULL) - goto error; + goto endjob; if (STRPREFIX(hostname, "localhost")) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("hostname on destination resolved to localhost," " but migration requires an FQDN")); - goto error; + goto endjob; } if (virPortAllocatorAcquire(driver->migrationPorts, &port) < 0) - goto error; + goto endjob; priv->migrationPort = port; if (virAsprintf(uri_out, "tcp://%s:%d", hostname, port) < 0) - goto error; + goto endjob; } else { if (!(STRPREFIX(uri_in, "tcp://"))) { /* not full URI, add prefix tcp:// */ char *tmp; if (virAsprintf(&tmp, "tcp://%s", uri_in) < 0) - goto error; + goto endjob; uri = virURIParse(tmp); VIR_FREE(tmp); } else { @@ -720,20 +730,20 @@ libxlDomainMigrationDstPrepare(virConnec virReportError(VIR_ERR_INVALID_ARG, _("unable to parse URI: %s"), uri_in); - goto error; + goto endjob; } if (uri->server == NULL) { virReportError(VIR_ERR_INVALID_ARG, _("missing host in migration URI: %s"), uri_in); - goto error; + goto endjob; } hostname = uri->server; if (uri->port == 0) { if (virPortAllocatorAcquire(driver->migrationPorts, &port) < 0) - goto error; + goto endjob; priv->migrationPort = port; } else { @@ -741,7 +751,7 @@ libxlDomainMigrationDstPrepare(virConnec } if (virAsprintf(uri_out, "tcp://%s:%d", hostname, port) < 0) - goto error; + goto endjob; } snprintf(portstr, sizeof(portstr), "%d", port); @@ -751,14 +761,14 @@ libxlDomainMigrationDstPrepare(virConnec &socks, &nsocks) < 0) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Fail to create socket for incoming migration")); - goto error; + goto endjob; } if (libxlMigrationDstArgsInitialize() < 0) - goto error; + goto endjob; if (!(args = virObjectNew(libxlMigrationDstArgsClass))) - goto error; + goto endjob; args->conn = virObjectRef(dconn); args->vm = virObjectRef(vm); @@ -786,11 +796,14 @@ libxlDomainMigrationDstPrepare(virConnec } if (!nsocks_listen) - goto error; + goto endjob; ret = 0; goto done; + endjob: + libxlDomainObjEndJob(driver, vm); + error: for (i = 0; i < nsocks; i++) { virNetSocketClose(socks[i]); @@ -1354,6 +1367,8 @@ libxlDomainMigrationDstFinish(virConnect virDomainObjListRemove(driver->domains, vm); } + /* EndJob for corresponding BeginJob in prepare phase */ + libxlDomainObjEndJob(driver, vm); virObjectEventStateQueue(driver->domainEventState, event); virObjectUnref(cfg); return dom; ++++++ 47da84e0-libxl-fix-job-handling-migsrc.patch ++++++ commit 47da84e09044e5af914a64469d06adef34279964 Author: Jim Fehlig <jfeh...@suse.com> Date: Tue Aug 28 17:30:18 2018 -0600 libxl: fix job handling across migration phases on src The libxlDomainMigrationSrc* functions are a bit flawed in their handling of modify jobs. A job begins at the start of the begin phase but ends before the phase completes. No job is running for the remaining phases of migration on the source host. Change the logic to keep the job running after a successful begin phase, and end the job in the confirm phase. The job must also end in the perform phase in the case of error since confirm phase would not be executed. Signed-off-by: Jim Fehlig <jfeh...@suse.com> ACKed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-4.7.0/src/libxl/libxl_migration.c =================================================================== --- libvirt-4.7.0.orig/src/libxl/libxl_migration.c +++ libvirt-4.7.0/src/libxl/libxl_migration.c @@ -399,6 +399,11 @@ libxlDomainMigrationSrcBegin(virConnectP virDomainDefPtr def; char *xml = NULL; + /* + * In the case of successful migration, a job is started here and + * terminated in the confirm phase. Errors in the begin or perform + * phase will also terminate the job. + */ if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; @@ -428,6 +433,9 @@ libxlDomainMigrationSrcBegin(virConnectP goto endjob; xml = virDomainDefFormat(def, cfg->caps, VIR_DOMAIN_DEF_FORMAT_SECURE); + /* Valid xml means success! EndJob in the confirm phase */ + if (xml) + goto cleanup; endjob: libxlDomainObjEndJob(driver, vm); @@ -1169,6 +1177,14 @@ libxlDomainMigrationSrcPerformP2P(libxlD ret = libxlDoMigrateSrcP2P(driver, vm, sconn, xmlin, dconn, dconnuri, dname, uri_str, flags); + if (ret < 0) { + /* + * Confirm phase will not be executed if perform fails. End the + * job started in begin phase. + */ + libxlDomainObjEndJob(driver, vm); + } + cleanup: orig_err = virSaveLastError(); virObjectUnlock(vm); @@ -1232,11 +1248,17 @@ libxlDomainMigrationSrcPerform(libxlDriv ret = libxlDoMigrateSrcSend(driver, vm, flags, sockfd); virObjectLock(vm); - if (ret < 0) + if (ret < 0) { virDomainLockProcessResume(driver->lockManager, "xen:///system", vm, priv->lockState); + /* + * Confirm phase will not be executed if perform fails. End the + * job started in begin phase. + */ + libxlDomainObjEndJob(driver, vm); + } cleanup: VIR_FORCE_CLOSE(sockfd); @@ -1386,6 +1408,8 @@ libxlDomainMigrationSrcConfirm(libxlDriv ret = 0; cleanup: + /* EndJob for corresponding BeginJob in begin phase */ + libxlDomainObjEndJob(driver, vm); virObjectEventStateQueue(driver->domainEventState, event); virObjectUnref(cfg); return ret; ++++++ 5ea2abb3-libxl-join-mig-rcv-thread.patch ++++++ commit 5ea2abb3bfd552175dc2dfcc295fde3fbf17fc37 Author: Jim Fehlig <jfeh...@suse.com> Date: Fri Aug 24 15:38:14 2018 -0600 libxl: join with thread receiving migration data It is possible the incoming VM is not fully started when the finish phase of migration is executed. In libxlDomainMigrationDstFinish, wait for the thread receiving the VM to complete before executing finish phase tasks. Signed-off-by: Jim Fehlig <jfeh...@suse.com> ACKed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-4.7.0/src/libxl/libxl_domain.h =================================================================== --- libvirt-4.7.0.orig/src/libxl/libxl_domain.h +++ libvirt-4.7.0/src/libxl/libxl_domain.h @@ -65,6 +65,7 @@ struct _libxlDomainObjPrivate { /* console */ virChrdevsPtr devs; libxl_evgen_domain_death *deathW; + virThreadPtr migrationDstReceiveThr; unsigned short migrationPort; char *lockState; Index: libvirt-4.7.0/src/libxl/libxl_migration.c =================================================================== --- libvirt-4.7.0.orig/src/libxl/libxl_migration.c +++ libvirt-4.7.0/src/libxl/libxl_migration.c @@ -297,9 +297,9 @@ libxlMigrateDstReceive(virNetSocketPtr s libxlMigrationDstArgs *args = opaque; virNetSocketPtr *socks = args->socks; size_t nsocks = args->nsocks; + libxlDomainObjPrivatePtr priv = args->vm->privateData; virNetSocketPtr client_sock; int recvfd = -1; - virThread thread; size_t i; /* Accept migration connection */ @@ -318,7 +318,10 @@ libxlMigrateDstReceive(virNetSocketPtr s * the migration data */ args->recvfd = recvfd; - if (virThreadCreate(&thread, false, + VIR_FREE(priv->migrationDstReceiveThr); + if (VIR_ALLOC(priv->migrationDstReceiveThr) < 0) + goto fail; + if (virThreadCreate(priv->migrationDstReceiveThr, true, libxlDoMigrateDstReceive, args) < 0) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Failed to create thread for receiving migration data")); @@ -557,7 +560,6 @@ libxlDomainMigrationDstPrepareTunnel3(vi libxlDriverPrivatePtr driver = dconn->privateData; virDomainObjPtr vm = NULL; libxlMigrationDstArgs *args = NULL; - virThread thread; bool taint_hook = false; libxlDomainObjPrivatePtr priv = NULL; char *xmlout = NULL; @@ -617,7 +619,10 @@ libxlDomainMigrationDstPrepareTunnel3(vi args->nsocks = 0; mig = NULL; - if (virThreadCreate(&thread, false, libxlDoMigrateDstReceive, args) < 0) { + VIR_FREE(priv->migrationDstReceiveThr); + if (VIR_ALLOC(priv->migrationDstReceiveThr) < 0) + goto error; + if (virThreadCreate(priv->migrationDstReceiveThr, true, libxlDoMigrateDstReceive, args) < 0) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Failed to create thread for receiving migration data")); goto endjob; @@ -1291,6 +1296,13 @@ libxlDomainMigrationDstFinish(virConnect virObjectEventPtr event = NULL; virDomainPtr dom = NULL; + if (priv->migrationDstReceiveThr) { + virObjectUnlock(vm); + virThreadJoin(priv->migrationDstReceiveThr); + virObjectLock(vm); + VIR_FREE(priv->migrationDstReceiveThr); + } + virPortAllocatorRelease(priv->migrationPort); priv->migrationPort = 0; ++++++ 60b4fd90-libxl-rm-vm-finish-phase.patch ++++++ commit 60b4fd90213135be0e471756d3d95c68eb3e8f59 Author: Jim Fehlig <jfeh...@suse.com> Date: Fri Aug 24 14:55:03 2018 -0600 libxl: migration: defer removing VM until finish phase If for any reason the restore of a VM fails on the destination host in a migration operation, the VM is removed (if not persistent) from the virDomainObjList, meaning it is no longer available for additional cleanup or processing in the finish phase. Defer removing the VM from the virDomainObjList until the finish phase, which already contains logic to remove the VM. Signed-off-by: Jim Fehlig <jfeh...@suse.com> ACKed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-4.7.0/src/libxl/libxl_migration.c =================================================================== --- libvirt-4.7.0.orig/src/libxl/libxl_migration.c +++ libvirt-4.7.0/src/libxl/libxl_migration.c @@ -264,7 +264,6 @@ libxlDoMigrateDstReceive(void *opaque) libxlDriverPrivatePtr driver = args->conn->privateData; int recvfd = args->recvfd; size_t i; - int ret; virObjectRef(vm); virObjectLock(vm); @@ -274,12 +273,10 @@ libxlDoMigrateDstReceive(void *opaque) /* * Always start the domain paused. If needed, unpause in the * finish phase, after transfer of the domain is complete. + * Errors and cleanup are also handled in the finish phase. */ - ret = libxlDomainStartRestore(driver, vm, true, recvfd, - args->migcookie->xenMigStreamVer); - - if (ret < 0 && !vm->persistent) - virDomainObjListRemove(driver->domains, vm); + libxlDomainStartRestore(driver, vm, true, recvfd, + args->migcookie->xenMigStreamVer); /* Remove all listen socks from event handler, and close them. */ for (i = 0; i < nsocks; i++) { ++++++ apparmor-no-mount.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.479773080 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.479773080 +0200 @@ -1,7 +1,7 @@ -Index: libvirt-4.6.0/examples/apparmor/libvirt-lxc +Index: libvirt-4.7.0/examples/apparmor/libvirt-lxc =================================================================== ---- libvirt-4.6.0.orig/examples/apparmor/libvirt-lxc -+++ libvirt-4.6.0/examples/apparmor/libvirt-lxc +--- libvirt-4.7.0.orig/examples/apparmor/libvirt-lxc ++++ libvirt-4.7.0/examples/apparmor/libvirt-lxc @@ -2,39 +2,15 @@ #include <abstractions/base> ++++++ blockcopy-check-dst-identical-device.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.495773066 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.499773062 +0200 @@ -11,11 +11,11 @@ src/qemu/qemu_driver.c | 7 +++++++ 1 file changed, 7 insertions(+) -Index: libvirt-4.6.0/src/qemu/qemu_driver.c +Index: libvirt-4.7.0/src/qemu/qemu_driver.c =================================================================== ---- libvirt-4.6.0.orig/src/qemu/qemu_driver.c -+++ libvirt-4.6.0/src/qemu/qemu_driver.c -@@ -17484,6 +17484,14 @@ qemuDomainBlockCopyCommon(virDomainObjPt +--- libvirt-4.7.0.orig/src/qemu/qemu_driver.c ++++ libvirt-4.7.0/src/qemu/qemu_driver.c +@@ -17511,6 +17511,14 @@ qemuDomainBlockCopyCommon(virDomainObjPt goto endjob; } ++++++ e39c66d3-libxl-fix-p2p-migration.patch ++++++ commit e39c66d3ce3e65170a1db1324eb1fb8e57d82ecb Author: Jim Fehlig <jfeh...@suse.com> Date: Tue Aug 28 17:13:54 2018 -0600 libxl: fix logic in P2P migration libxlDoMigrateSrcP2P() performs all phases of the migration protocol for peer-to-peer migration. Unfortunately the logic was a bit flawed since it is possible to skip the confirm phase after a successfull begin and prepare phase. Fix the logic to always call the confirm phase after a successful begin and perform. Skip the confirm phase if begin or perform fail. Signed-off-by: Jim Fehlig <jfeh...@suse.com> ACKed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-4.7.0/src/libxl/libxl_migration.c =================================================================== --- libvirt-4.7.0.orig/src/libxl/libxl_migration.c +++ libvirt-4.7.0/src/libxl/libxl_migration.c @@ -972,21 +972,13 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP char *cookieout = NULL; int cookieoutlen; bool cancelled = true; + bool notify_source = true; virErrorPtr orig_err = NULL; int ret = -1; /* For tunnel migration */ virStreamPtr st = NULL; struct libxlTunnelControl *tc = NULL; - dom_xml = libxlDomainMigrationSrcBegin(sconn, vm, xmlin, - &cookieout, &cookieoutlen); - if (!dom_xml) - goto cleanup; - - if (virTypedParamsAddString(¶ms, &nparams, &maxparams, - VIR_MIGRATE_PARAM_DEST_XML, dom_xml) < 0) - goto cleanup; - if (dname && virTypedParamsAddString(¶ms, &nparams, &maxparams, VIR_MIGRATE_PARAM_DEST_NAME, dname) < 0) @@ -997,6 +989,19 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP VIR_MIGRATE_PARAM_URI, uri) < 0) goto cleanup; + dom_xml = libxlDomainMigrationSrcBegin(sconn, vm, xmlin, + &cookieout, &cookieoutlen); + /* + * If dom_xml is non-NULL the begin phase has succeeded, and the + * confirm phase must be called to cleanup the migration operation. + */ + if (!dom_xml) + goto cleanup; + + if (virTypedParamsAddString(¶ms, &nparams, &maxparams, + VIR_MIGRATE_PARAM_DEST_XML, dom_xml) < 0) + goto confirm; + /* We don't require the destination to have P2P support * as it looks to be normal migration from the receiver perpective. */ @@ -1006,7 +1011,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP virObjectUnlock(vm); if (flags & VIR_MIGRATE_TUNNELLED) { if (!(st = virStreamNew(dconn, 0))) - goto cleanup; + goto confirm; ret = dconn->driver->domainMigratePrepareTunnel3Params (dconn, st, params, nparams, cookieout, cookieoutlen, NULL, NULL, destflags); } else { @@ -1016,7 +1021,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP virObjectLock(vm); if (ret == -1) - goto cleanup; + goto confirm; if (!(flags & VIR_MIGRATE_TUNNELLED)) { if (uri_out) { @@ -1038,8 +1043,10 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP else ret = libxlDomainMigrationSrcPerform(driver, vm, NULL, NULL, uri_out, NULL, flags); - if (ret < 0) + if (ret < 0) { + notify_source = false; orig_err = virSaveLastError(); + } cancelled = (ret < 0); @@ -1067,12 +1074,15 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP if (!orig_err) orig_err = virSaveLastError(); - VIR_DEBUG("Confirm3 cancelled=%d vm=%p", cancelled, vm); - ret = libxlDomainMigrationSrcConfirm(driver, vm, flags, cancelled); - - if (ret < 0) - VIR_WARN("Guest %s probably left in 'paused' state on source", - vm->def->name); + confirm: + if (notify_source) { + VIR_DEBUG("Confirm3 cancelled=%d vm=%p", cancelled, vm); + ret = libxlDomainMigrationSrcConfirm(driver, vm, flags, cancelled); + + if (ret < 0) + VIR_WARN("Guest %s probably left in 'paused' state on source", + vm->def->name); + } cleanup: if (flags & VIR_MIGRATE_TUNNELLED) { ++++++ libvirt-4.6.0.tar.xz -> libvirt-4.7.0.tar.xz ++++++ /work/SRC/openSUSE:Factory/libvirt/libvirt-4.6.0.tar.xz /work/SRC/openSUSE:Factory/.libvirt.new/libvirt-4.7.0.tar.xz differ: char 15, line 1 ++++++ libvirt-power8-models.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.527773038 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.527773038 +0200 @@ -2,16 +2,15 @@ From: <r...@suse.de> -Index: libvirt-4.6.0/src/cpu/cpu_map.xml +Index: libvirt-4.7.0/src/cpu_map/ppc64_POWER8.xml =================================================================== ---- libvirt-4.6.0.orig/src/cpu/cpu_map.xml -+++ libvirt-4.6.0/src/cpu/cpu_map.xml -@@ -2361,6 +2361,8 @@ - <pvr value='0x004b0000' mask='0xffff0000'/> - <pvr value='0x004c0000' mask='0xffff0000'/> - <pvr value='0x004d0000' mask='0xffff0000'/> -+ <pvr value='0x004b0200' mask='0xffffffff'/> -+ <pvr value='0x004b0201' mask='0xffffffff'/> - </model> - - <model name='POWER9'> +--- libvirt-4.7.0.orig/src/cpu_map/ppc64_POWER8.xml ++++ libvirt-4.7.0/src/cpu_map/ppc64_POWER8.xml +@@ -4,5 +4,7 @@ + <pvr value='0x004b0000' mask='0xffff0000'/> + <pvr value='0x004c0000' mask='0xffff0000'/> + <pvr value='0x004d0000' mask='0xffff0000'/> ++ <pvr value='0x004b0200' mask='0xffffffff'/> ++ <pvr value='0x004b0201' mask='0xffffffff'/> + </model> + </cpus> ++++++ libvirt-suse-netcontrol.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.555773014 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.555773014 +0200 @@ -1,8 +1,8 @@ -Index: libvirt-4.6.0/configure.ac +Index: libvirt-4.7.0/configure.ac =================================================================== ---- libvirt-4.6.0.orig/configure.ac -+++ libvirt-4.6.0/configure.ac -@@ -255,6 +255,7 @@ LIBVIRT_ARG_LIBSSH +--- libvirt-4.7.0.orig/configure.ac ++++ libvirt-4.7.0/configure.ac +@@ -256,6 +256,7 @@ LIBVIRT_ARG_LIBSSH LIBVIRT_ARG_LIBXML LIBVIRT_ARG_MACVTAP LIBVIRT_ARG_NETCF @@ -10,7 +10,7 @@ LIBVIRT_ARG_NLS LIBVIRT_ARG_NSS LIBVIRT_ARG_NUMACTL -@@ -297,6 +298,7 @@ LIBVIRT_CHECK_LIBSSH +@@ -299,6 +300,7 @@ LIBVIRT_CHECK_LIBSSH LIBVIRT_CHECK_LIBXML LIBVIRT_CHECK_MACVTAP LIBVIRT_CHECK_NETCF @@ -18,7 +18,7 @@ LIBVIRT_CHECK_NLS LIBVIRT_CHECK_NUMACTL LIBVIRT_CHECK_NWFILTER -@@ -977,6 +979,7 @@ LIBVIRT_RESULT_LIBXL +@@ -984,6 +986,7 @@ LIBVIRT_RESULT_LIBXL LIBVIRT_RESULT_LIBXML LIBVIRT_RESULT_MACVTAP LIBVIRT_RESULT_NETCF @@ -26,10 +26,10 @@ LIBVIRT_RESULT_NLS LIBVIRT_RESULT_NSS LIBVIRT_RESULT_NUMACTL -Index: libvirt-4.6.0/tools/virsh.c +Index: libvirt-4.7.0/tools/virsh.c =================================================================== ---- libvirt-4.6.0.orig/tools/virsh.c -+++ libvirt-4.6.0/tools/virsh.c +--- libvirt-4.7.0.orig/tools/virsh.c ++++ libvirt-4.7.0/tools/virsh.c @@ -575,6 +575,8 @@ virshShowVersion(vshControl *ctl ATTRIBU vshPrint(ctl, " Interface"); # if defined(WITH_NETCF) @@ -39,10 +39,10 @@ # elif defined(WITH_UDEV) vshPrint(ctl, " udev"); # endif -Index: libvirt-4.6.0/src/interface/interface_backend_netcf.c +Index: libvirt-4.7.0/src/interface/interface_backend_netcf.c =================================================================== ---- libvirt-4.6.0.orig/src/interface/interface_backend_netcf.c -+++ libvirt-4.6.0/src/interface/interface_backend_netcf.c +--- libvirt-4.7.0.orig/src/interface/interface_backend_netcf.c ++++ libvirt-4.7.0/src/interface/interface_backend_netcf.c @@ -23,7 +23,12 @@ #include <config.h> @@ -126,10 +126,10 @@ if (virRegisterConnectDriver(&interfaceConnectDriver, false) < 0) return -1; if (virSetSharedInterfaceDriver(&interfaceDriver) < 0) -Index: libvirt-4.6.0/src/interface/interface_driver.c +Index: libvirt-4.7.0/src/interface/interface_driver.c =================================================================== ---- libvirt-4.6.0.orig/src/interface/interface_driver.c -+++ libvirt-4.6.0/src/interface/interface_driver.c +--- libvirt-4.7.0.orig/src/interface/interface_driver.c ++++ libvirt-4.7.0/src/interface/interface_driver.c @@ -30,8 +30,15 @@ interfaceRegister(void) if (netcfIfaceRegister() == 0) return 0; @@ -147,10 +147,10 @@ if (udevIfaceRegister() == 0) return 0; #endif /* WITH_UDEV */ -Index: libvirt-4.6.0/m4/virt-netcontrol.m4 +Index: libvirt-4.7.0/m4/virt-netcontrol.m4 =================================================================== --- /dev/null -+++ libvirt-4.6.0/m4/virt-netcontrol.m4 ++++ libvirt-4.7.0/m4/virt-netcontrol.m4 @@ -0,0 +1,39 @@ +dnl The libnetcontrol library +dnl @@ -191,10 +191,10 @@ +AC_DEFUN([LIBVIRT_RESULT_NETCONTROL],[ + LIBVIRT_RESULT_LIB([NETCONTROL]) +]) -Index: libvirt-4.6.0/src/interface/Makefile.inc.am +Index: libvirt-4.7.0/src/interface/Makefile.inc.am =================================================================== ---- libvirt-4.6.0.orig/src/interface/Makefile.inc.am -+++ libvirt-4.6.0/src/interface/Makefile.inc.am +--- libvirt-4.7.0.orig/src/interface/Makefile.inc.am ++++ libvirt-4.7.0/src/interface/Makefile.inc.am @@ -4,6 +4,7 @@ INTERFACE_DRIVER_SOURCES = \ $(NULL) ++++++ libxl-dom-reset.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.599772976 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.599772976 +0200 @@ -8,10 +8,10 @@ option, but domainReset can be implemented in the libxl driver by forcibly destroying the domain and starting it again. -Index: libvirt-4.6.0/src/libxl/libxl_driver.c +Index: libvirt-4.7.0/src/libxl/libxl_driver.c =================================================================== ---- libvirt-4.6.0.orig/src/libxl/libxl_driver.c -+++ libvirt-4.6.0/src/libxl/libxl_driver.c +--- libvirt-4.7.0.orig/src/libxl/libxl_driver.c ++++ libvirt-4.7.0/src/libxl/libxl_driver.c @@ -1344,6 +1344,61 @@ libxlDomainReboot(virDomainPtr dom, unsi } @@ -74,7 +74,7 @@ libxlDomainDestroyFlags(virDomainPtr dom, unsigned int flags) { -@@ -6383,6 +6438,7 @@ static virHypervisorDriver libxlHypervis +@@ -6376,6 +6431,7 @@ static virHypervisorDriver libxlHypervis .domainShutdown = libxlDomainShutdown, /* 0.9.0 */ .domainShutdownFlags = libxlDomainShutdownFlags, /* 0.9.10 */ .domainReboot = libxlDomainReboot, /* 0.9.0 */ ++++++ libxl-qemu-emulator-caps.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.607772970 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.607772970 +0200 @@ -8,10 +8,10 @@ See FATE#320638 for details. -Index: libvirt-4.6.0/src/libxl/libxl_capabilities.c +Index: libvirt-4.7.0/src/libxl/libxl_capabilities.c =================================================================== ---- libvirt-4.6.0.orig/src/libxl/libxl_capabilities.c -+++ libvirt-4.6.0/src/libxl/libxl_capabilities.c +--- libvirt-4.7.0.orig/src/libxl/libxl_capabilities.c ++++ libvirt-4.7.0/src/libxl/libxl_capabilities.c @@ -38,6 +38,7 @@ #include "libxl_capabilities.h" #include "cpu/cpu_x86.h" ++++++ libxl-set-cach-mode.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.615772963 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.619772959 +0200 @@ -3,10 +3,10 @@ src/libxl/libxl_conf.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) -Index: libvirt-4.6.0/src/libxl/libxl_conf.c +Index: libvirt-4.7.0/src/libxl/libxl_conf.c =================================================================== ---- libvirt-4.6.0.orig/src/libxl/libxl_conf.c -+++ libvirt-4.6.0/src/libxl/libxl_conf.c +--- libvirt-4.7.0.orig/src/libxl/libxl_conf.c ++++ libvirt-4.7.0/src/libxl/libxl_conf.c @@ -837,6 +837,30 @@ libxlDiskSetDiscard(libxl_device_disk *x #endif } ++++++ libxl-set-migration-constraints.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.623772956 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.627772953 +0200 @@ -16,10 +16,10 @@ tools/virsh.pod | 8 ++++++++ 6 files changed, 125 insertions(+), 6 deletions(-) -Index: libvirt-4.6.0/include/libvirt/libvirt-domain.h +Index: libvirt-4.7.0/include/libvirt/libvirt-domain.h =================================================================== ---- libvirt-4.6.0.orig/include/libvirt/libvirt-domain.h -+++ libvirt-4.6.0/include/libvirt/libvirt-domain.h +--- libvirt-4.7.0.orig/include/libvirt/libvirt-domain.h ++++ libvirt-4.7.0/include/libvirt/libvirt-domain.h @@ -1015,6 +1015,31 @@ typedef enum { */ # define VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT "auto_converge.increment" @@ -52,10 +52,10 @@ /* Domain migration. */ virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn, unsigned long flags, const char *dname, -Index: libvirt-4.6.0/src/libxl/libxl_driver.c +Index: libvirt-4.7.0/src/libxl/libxl_driver.c =================================================================== ---- libvirt-4.6.0.orig/src/libxl/libxl_driver.c -+++ libvirt-4.6.0/src/libxl/libxl_driver.c +--- libvirt-4.7.0.orig/src/libxl/libxl_driver.c ++++ libvirt-4.7.0/src/libxl/libxl_driver.c @@ -5985,6 +5985,9 @@ libxlDomainMigratePerform3Params(virDoma const char *dname = NULL; const char *uri = NULL; @@ -99,11 +99,11 @@ goto cleanup; } -Index: libvirt-4.6.0/src/libxl/libxl_migration.c +Index: libvirt-4.7.0/src/libxl/libxl_migration.c =================================================================== ---- libvirt-4.6.0.orig/src/libxl/libxl_migration.c -+++ libvirt-4.6.0/src/libxl/libxl_migration.c -@@ -353,18 +353,39 @@ libxlMigrateDstReceive(virNetSocketPtr s +--- libvirt-4.7.0.orig/src/libxl/libxl_migration.c ++++ libvirt-4.7.0/src/libxl/libxl_migration.c +@@ -346,18 +346,39 @@ libxlMigrateDstReceive(virNetSocketPtr s static int libxlDoMigrateSrcSend(libxlDriverPrivatePtr driver, virDomainObjPtr vm, @@ -145,7 +145,7 @@ if (ret != 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Failed to send migration data to destination host")); -@@ -894,7 +915,7 @@ struct libxlTunnelControl { +@@ -917,7 +938,7 @@ struct libxlTunnelControl { static int libxlMigrationSrcStartTunnel(libxlDriverPrivatePtr driver, virDomainObjPtr vm, @@ -154,7 +154,7 @@ virStreamPtr st, struct libxlTunnelControl **tnl) { -@@ -927,7 +948,7 @@ libxlMigrationSrcStartTunnel(libxlDriver +@@ -950,7 +971,7 @@ libxlMigrationSrcStartTunnel(libxlDriver virObjectUnlock(vm); /* Send data to pipe */ @@ -163,7 +163,7 @@ virObjectLock(vm); out: -@@ -963,7 +984,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP +@@ -986,7 +1007,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP const char *dconnuri ATTRIBUTE_UNUSED, const char *dname, const char *uri, @@ -172,7 +172,7 @@ { virDomainPtr ddomain = NULL; virTypedParameterPtr params = NULL; -@@ -1003,11 +1024,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP +@@ -1031,11 +1052,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP /* We don't require the destination to have P2P support * as it looks to be normal migration from the receiver perpective. */ @@ -184,18 +184,18 @@ - if (flags & VIR_MIGRATE_TUNNELLED) { + if (props->virFlags & VIR_MIGRATE_TUNNELLED) { if (!(st = virStreamNew(dconn, 0))) - goto cleanup; + goto confirm; ret = dconn->driver->domainMigratePrepareTunnel3Params -@@ -1021,7 +1042,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP +@@ -1049,7 +1070,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP if (ret == -1) - goto cleanup; + goto confirm; - if (!(flags & VIR_MIGRATE_TUNNELLED)) { + if (!(props->virFlags & VIR_MIGRATE_TUNNELLED)) { if (uri_out) { if (virTypedParamsReplaceString(¶ms, &nparams, VIR_MIGRATE_PARAM_URI, uri_out) < 0) { -@@ -1036,11 +1057,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP +@@ -1064,11 +1085,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP } VIR_DEBUG("Perform3 uri=%s", NULLSTR(uri_out)); @@ -207,19 +207,20 @@ ret = libxlDomainMigrationSrcPerform(driver, vm, NULL, NULL, - uri_out, NULL, flags); + uri_out, NULL, props); - if (ret < 0) - orig_err = virSaveLastError(); - -@@ -1071,14 +1092,14 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP + if (ret < 0) { + notify_source = false; orig_err = virSaveLastError(); - - VIR_DEBUG("Confirm3 cancelled=%d vm=%p", cancelled, vm); -- ret = libxlDomainMigrationSrcConfirm(driver, vm, flags, cancelled); -+ ret = libxlDomainMigrationSrcConfirm(driver, vm, props->virFlags, cancelled); - - if (ret < 0) - VIR_WARN("Guest %s probably left in 'paused' state on source", - vm->def->name); +@@ -1103,7 +1124,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP + confirm: + if (notify_source) { + VIR_DEBUG("Confirm3 cancelled=%d vm=%p", cancelled, vm); +- ret = libxlDomainMigrationSrcConfirm(driver, vm, flags, cancelled); ++ ret = libxlDomainMigrationSrcConfirm(driver, vm, props->virFlags, cancelled); + + if (ret < 0) + VIR_WARN("Guest %s probably left in 'paused' state on source", +@@ -1111,7 +1132,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivateP + } cleanup: - if (flags & VIR_MIGRATE_TUNNELLED) { @@ -227,7 +228,7 @@ libxlMigrationSrcStopTunnel(tc); virObjectUnref(st); } -@@ -1125,7 +1146,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD +@@ -1158,7 +1179,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD const char *dconnuri, const char *uri_str ATTRIBUTE_UNUSED, const char *dname, @@ -236,16 +237,16 @@ { int ret = -1; bool useParams; -@@ -1160,7 +1181,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD +@@ -1193,7 +1214,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD } ret = libxlDoMigrateSrcP2P(driver, vm, sconn, xmlin, dconn, dconnuri, - dname, uri_str, flags); + dname, uri_str, props); - cleanup: - orig_err = virSaveLastError(); -@@ -1182,7 +1203,7 @@ libxlDomainMigrationSrcPerform(libxlDriv + if (ret < 0) { + /* +@@ -1223,7 +1244,7 @@ libxlDomainMigrationSrcPerform(libxlDriv const char *dconnuri ATTRIBUTE_UNUSED, const char *uri_str, const char *dname ATTRIBUTE_UNUSED, @@ -254,7 +255,7 @@ { libxlDomainObjPrivatePtr priv = vm->privateData; char *hostname = NULL; -@@ -1222,7 +1243,7 @@ libxlDomainMigrationSrcPerform(libxlDriv +@@ -1263,7 +1284,7 @@ libxlDomainMigrationSrcPerform(libxlDriv /* suspend vm and send saved data to dst through socket fd */ virObjectUnlock(vm); @@ -262,11 +263,11 @@ + ret = libxlDoMigrateSrcSend(driver, vm, props, sockfd); virObjectLock(vm); - if (ret < 0) -Index: libvirt-4.6.0/src/libxl/libxl_migration.h + if (ret < 0) { +Index: libvirt-4.7.0/src/libxl/libxl_migration.h =================================================================== ---- libvirt-4.6.0.orig/src/libxl/libxl_migration.h -+++ libvirt-4.6.0/src/libxl/libxl_migration.h +--- libvirt-4.7.0.orig/src/libxl/libxl_migration.h ++++ libvirt-4.7.0/src/libxl/libxl_migration.h @@ -39,6 +39,10 @@ VIR_MIGRATE_PARAM_URI, VIR_TYPED_PARAM_STRING, \ VIR_MIGRATE_PARAM_DEST_NAME, VIR_TYPED_PARAM_STRING, \ @@ -311,10 +312,10 @@ virDomainPtr libxlDomainMigrationDstFinish(virConnectPtr dconn, -Index: libvirt-4.6.0/tools/virsh-domain.c +Index: libvirt-4.7.0/tools/virsh-domain.c =================================================================== ---- libvirt-4.6.0.orig/tools/virsh-domain.c -+++ libvirt-4.6.0/tools/virsh-domain.c +--- libvirt-4.7.0.orig/tools/virsh-domain.c ++++ libvirt-4.7.0/tools/virsh-domain.c @@ -10425,6 +10425,22 @@ static const vshCmdOptDef opts_migrate[] .type = VSH_OT_BOOL, .help = N_("use TLS for migration") @@ -374,10 +375,10 @@ if (vshCommandOptStringReq(ctl, cmd, "xml", &opt) < 0) goto out; if (opt) { -Index: libvirt-4.6.0/tools/virsh.pod +Index: libvirt-4.7.0/tools/virsh.pod =================================================================== ---- libvirt-4.6.0.orig/tools/virsh.pod -+++ libvirt-4.6.0/tools/virsh.pod +--- libvirt-4.7.0.orig/tools/virsh.pod ++++ libvirt-4.7.0/tools/virsh.pod @@ -1937,6 +1937,14 @@ Providing I<--tls> causes the migration the migration of the domain. Usage requires proper TLS setup for both source and target. ++++++ libxl-support-block-script.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.639772943 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.639772943 +0200 @@ -7,10 +7,10 @@ For more details, see bsc#954872 and FATE#319810 -Index: libvirt-4.6.0/src/libxl/libxl_conf.c +Index: libvirt-4.7.0/src/libxl/libxl_conf.c =================================================================== ---- libvirt-4.6.0.orig/src/libxl/libxl_conf.c -+++ libvirt-4.6.0/src/libxl/libxl_conf.c +--- libvirt-4.7.0.orig/src/libxl/libxl_conf.c ++++ libvirt-4.7.0/src/libxl/libxl_conf.c @@ -837,6 +837,25 @@ libxlDiskSetDiscard(libxl_device_disk *x #endif } ++++++ lxc-wait-after-eth-del.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.647772935 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.647772935 +0200 @@ -13,10 +13,10 @@ src/lxc/lxc_process.c | 1 + 3 files changed, 4 insertions(+) -Index: libvirt-4.6.0/src/lxc/lxc_controller.c +Index: libvirt-4.7.0/src/lxc/lxc_controller.c =================================================================== ---- libvirt-4.6.0.orig/src/lxc/lxc_controller.c -+++ libvirt-4.6.0/src/lxc/lxc_controller.c +--- libvirt-4.7.0.orig/src/lxc/lxc_controller.c ++++ libvirt-4.7.0/src/lxc/lxc_controller.c @@ -73,6 +73,7 @@ #include "rpc/virnetdaemon.h" #include "virstring.h" @@ -33,10 +33,10 @@ return ret; } -Index: libvirt-4.6.0/src/lxc/lxc_driver.c +Index: libvirt-4.7.0/src/lxc/lxc_driver.c =================================================================== ---- libvirt-4.6.0.orig/src/lxc/lxc_driver.c -+++ libvirt-4.6.0/src/lxc/lxc_driver.c +--- libvirt-4.7.0.orig/src/lxc/lxc_driver.c ++++ libvirt-4.7.0/src/lxc/lxc_driver.c @@ -74,6 +74,7 @@ #include "virtime.h" #include "virtypedparam.h" @@ -61,10 +61,10 @@ break; /* It'd be nice to support this, but with macvlan -Index: libvirt-4.6.0/src/lxc/lxc_process.c +Index: libvirt-4.7.0/src/lxc/lxc_process.c =================================================================== ---- libvirt-4.6.0.orig/src/lxc/lxc_process.c -+++ libvirt-4.6.0/src/lxc/lxc_process.c +--- libvirt-4.7.0.orig/src/lxc/lxc_process.c ++++ libvirt-4.7.0/src/lxc/lxc_process.c @@ -51,6 +51,7 @@ #include "viratomic.h" #include "virprocess.h" ++++++ network-don-t-use-dhcp-authoritative-on-static-netwo.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.655772929 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.655772929 +0200 @@ -17,10 +17,10 @@ tests/networkxml2confdata/dhcp6host-routed-network.conf | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) -Index: libvirt-4.6.0/src/network/bridge_driver.c +Index: libvirt-4.7.0/src/network/bridge_driver.c =================================================================== ---- libvirt-4.6.0.orig/src/network/bridge_driver.c -+++ libvirt-4.6.0/src/network/bridge_driver.c +--- libvirt-4.7.0.orig/src/network/bridge_driver.c ++++ libvirt-4.7.0/src/network/bridge_driver.c @@ -1463,7 +1463,14 @@ networkDnsmasqConfContents(virNetworkObj if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET)) { if (ipdef->nranges || ipdef->nhosts) { @@ -37,10 +37,10 @@ } if (ipdef->tftproot) { -Index: libvirt-4.6.0/tests/networkxml2confdata/dhcp6host-routed-network.conf +Index: libvirt-4.7.0/tests/networkxml2confdata/dhcp6host-routed-network.conf =================================================================== ---- libvirt-4.6.0.orig/tests/networkxml2confdata/dhcp6host-routed-network.conf -+++ libvirt-4.6.0/tests/networkxml2confdata/dhcp6host-routed-network.conf +--- libvirt-4.7.0.orig/tests/networkxml2confdata/dhcp6host-routed-network.conf ++++ libvirt-4.7.0/tests/networkxml2confdata/dhcp6host-routed-network.conf @@ -10,7 +10,6 @@ bind-dynamic interface=virbr1 dhcp-range=192.168.122.1,static ++++++ ppc64le-canonical-name.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.663772922 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.663772922 +0200 @@ -2,11 +2,11 @@ See bnc#894956 -Index: libvirt-4.6.0/src/util/virarch.c +Index: libvirt-4.7.0/src/util/virarch.c =================================================================== ---- libvirt-4.6.0.orig/src/util/virarch.c -+++ libvirt-4.6.0/src/util/virarch.c -@@ -169,6 +169,8 @@ virArch virArchFromHost(void) +--- libvirt-4.7.0.orig/src/util/virarch.c ++++ libvirt-4.7.0/src/util/virarch.c +@@ -172,6 +172,8 @@ virArch virArchFromHost(void) arch = VIR_ARCH_I686; } else if (STREQ(ut.machine, "amd64")) { arch = VIR_ARCH_X86_64; ++++++ qemu-apparmor-screenshot.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.675772912 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.675772912 +0200 @@ -1,8 +1,8 @@ -Index: libvirt-4.6.0/examples/apparmor/libvirt-qemu +Index: libvirt-4.7.0/examples/apparmor/libvirt-qemu =================================================================== ---- libvirt-4.6.0.orig/examples/apparmor/libvirt-qemu -+++ libvirt-4.6.0/examples/apparmor/libvirt-qemu -@@ -205,3 +205,6 @@ +--- libvirt-4.7.0.orig/examples/apparmor/libvirt-qemu ++++ libvirt-4.7.0/examples/apparmor/libvirt-qemu +@@ -221,3 +221,6 @@ # required for sasl GSSAPI plugin /etc/gss/mech.d/ r, /etc/gss/mech.d/* r, ++++++ support-managed-pci-xen-driver.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.683772905 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.683772905 +0200 @@ -8,10 +8,10 @@ src/xenxs/xen_xm.c | 28 +++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 15 deletions(-) -Index: libvirt-4.6.0/src/xenconfig/xen_common.c +Index: libvirt-4.7.0/src/xenconfig/xen_common.c =================================================================== ---- libvirt-4.6.0.orig/src/xenconfig/xen_common.c -+++ libvirt-4.6.0/src/xenconfig/xen_common.c +--- libvirt-4.7.0.orig/src/xenconfig/xen_common.c ++++ libvirt-4.7.0/src/xenconfig/xen_common.c @@ -402,12 +402,19 @@ xenParsePCI(char *entry) int busID; int slotID; @@ -64,10 +64,10 @@ hostdev->source.subsys.type = VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI; hostdev->source.subsys.u.pci.addr.domain = domainID; hostdev->source.subsys.u.pci.addr.bus = busID; -Index: libvirt-4.6.0/src/xenconfig/xen_sxpr.c +Index: libvirt-4.7.0/src/xenconfig/xen_sxpr.c =================================================================== ---- libvirt-4.6.0.orig/src/xenconfig/xen_sxpr.c -+++ libvirt-4.6.0/src/xenconfig/xen_sxpr.c +--- libvirt-4.7.0.orig/src/xenconfig/xen_sxpr.c ++++ libvirt-4.7.0/src/xenconfig/xen_sxpr.c @@ -1057,6 +1057,7 @@ xenParseSxprPCI(virDomainDefPtr def, int busID; int slotID; ++++++ suse-apparmor-libnl-paths.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.691772898 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.691772898 +0200 @@ -8,10 +8,10 @@ to squelch a denial when starting confined domains. Found while investigating bsc#1058847 -Index: libvirt-4.6.0/examples/apparmor/usr.lib.libvirt.virt-aa-helper +Index: libvirt-4.7.0/examples/apparmor/usr.lib.libvirt.virt-aa-helper =================================================================== ---- libvirt-4.6.0.orig/examples/apparmor/usr.lib.libvirt.virt-aa-helper -+++ libvirt-4.6.0/examples/apparmor/usr.lib.libvirt.virt-aa-helper +--- libvirt-4.7.0.orig/examples/apparmor/usr.lib.libvirt.virt-aa-helper ++++ libvirt-4.7.0/examples/apparmor/usr.lib.libvirt.virt-aa-helper @@ -17,7 +17,7 @@ profile virt-aa-helper /usr/{lib,lib64}/ owner @{PROC}/[0-9]*/status r, @{PROC}/filesystems r, @@ -21,10 +21,10 @@ # for hostdev /sys/devices/ r, -Index: libvirt-4.6.0/examples/apparmor/libvirt-qemu +Index: libvirt-4.7.0/examples/apparmor/libvirt-qemu =================================================================== ---- libvirt-4.6.0.orig/examples/apparmor/libvirt-qemu -+++ libvirt-4.6.0/examples/apparmor/libvirt-qemu +--- libvirt-4.7.0.orig/examples/apparmor/libvirt-qemu ++++ libvirt-4.7.0/examples/apparmor/libvirt-qemu @@ -62,6 +62,7 @@ #/dev/fb* rw, ++++++ suse-libvirt-guests-service.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.699772891 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.699772891 +0200 @@ -1,9 +1,9 @@ Adjust libvirt-guests service to conform to SUSE standards -Index: libvirt-4.6.0/tools/libvirt-guests.init.in +Index: libvirt-4.7.0/tools/libvirt-guests.init.in =================================================================== ---- libvirt-4.6.0.orig/tools/libvirt-guests.init.in -+++ libvirt-4.6.0/tools/libvirt-guests.init.in +--- libvirt-4.7.0.orig/tools/libvirt-guests.init.in ++++ libvirt-4.7.0/tools/libvirt-guests.init.in @@ -4,27 +4,27 @@ # http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html # @@ -46,10 +46,10 @@ + exec @libexecdir@/libvirt-guests.sh "$@" -Index: libvirt-4.6.0/tools/libvirt-guests.sh.in +Index: libvirt-4.7.0/tools/libvirt-guests.sh.in =================================================================== ---- libvirt-4.6.0.orig/tools/libvirt-guests.sh.in -+++ libvirt-4.6.0/tools/libvirt-guests.sh.in +--- libvirt-4.7.0.orig/tools/libvirt-guests.sh.in ++++ libvirt-4.7.0/tools/libvirt-guests.sh.in @@ -16,14 +16,13 @@ # License along with this library. If not, see # <http://www.gnu.org/licenses/>. @@ -209,10 +209,10 @@ esac -exit $RETVAL +rc_exit -Index: libvirt-4.6.0/tools/libvirt-guests.sysconf +Index: libvirt-4.7.0/tools/libvirt-guests.sysconf =================================================================== ---- libvirt-4.6.0.orig/tools/libvirt-guests.sysconf -+++ libvirt-4.6.0/tools/libvirt-guests.sysconf +--- libvirt-4.7.0.orig/tools/libvirt-guests.sysconf ++++ libvirt-4.7.0/tools/libvirt-guests.sysconf @@ -1,19 +1,29 @@ +## Path: System/Virtualization/libvirt-guests + ++++++ suse-libvirtd-disable-tls.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.707772885 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.711772881 +0200 @@ -3,10 +3,10 @@ On SUSE distros, the default is for libvirtd to listen only on the Unix Domain Socket. The libvirt client still provides remote access via a SSH tunnel. -Index: libvirt-4.6.0/src/remote/libvirtd.conf +Index: libvirt-4.7.0/src/remote/libvirtd.conf =================================================================== ---- libvirt-4.6.0.orig/src/remote/libvirtd.conf -+++ libvirt-4.6.0/src/remote/libvirtd.conf +--- libvirt-4.7.0.orig/src/remote/libvirtd.conf ++++ libvirt-4.7.0/src/remote/libvirtd.conf @@ -18,8 +18,8 @@ # It is necessary to setup a CA and issue server certificates before # using this capability. @@ -18,10 +18,10 @@ # Listen for unencrypted TCP connections on the public TCP/IP port. # NB, must pass the --listen flag to the libvirtd process for this to -Index: libvirt-4.6.0/src/remote/remote_daemon_config.c +Index: libvirt-4.7.0/src/remote/remote_daemon_config.c =================================================================== ---- libvirt-4.6.0.orig/src/remote/remote_daemon_config.c -+++ libvirt-4.6.0/src/remote/remote_daemon_config.c +--- libvirt-4.7.0.orig/src/remote/remote_daemon_config.c ++++ libvirt-4.7.0/src/remote/remote_daemon_config.c @@ -110,7 +110,7 @@ daemonConfigNew(bool privileged ATTRIBUT if (VIR_ALLOC(data) < 0) return NULL; @@ -31,10 +31,10 @@ data->listen_tcp = 0; if (VIR_STRDUP(data->tls_port, LIBVIRTD_TLS_PORT) < 0 || -Index: libvirt-4.6.0/src/remote/test_libvirtd.aug.in +Index: libvirt-4.7.0/src/remote/test_libvirtd.aug.in =================================================================== ---- libvirt-4.6.0.orig/src/remote/test_libvirtd.aug.in -+++ libvirt-4.6.0/src/remote/test_libvirtd.aug.in +--- libvirt-4.7.0.orig/src/remote/test_libvirtd.aug.in ++++ libvirt-4.7.0/src/remote/test_libvirtd.aug.in @@ -2,7 +2,7 @@ module Test_libvirtd = ::CONFIG:: ++++++ suse-libvirtd-service-xen.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.719772874 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.719772874 +0200 @@ -7,10 +7,10 @@ tools. If a user installs libvirt on their SUSE Xen host, then libvirt should be king and override xendomains. See bsc#1015348 -Index: libvirt-4.6.0/src/remote/libvirtd.service.in +Index: libvirt-4.7.0/src/remote/libvirtd.service.in =================================================================== ---- libvirt-4.6.0.orig/src/remote/libvirtd.service.in -+++ libvirt-4.6.0/src/remote/libvirtd.service.in +--- libvirt-4.7.0.orig/src/remote/libvirtd.service.in ++++ libvirt-4.7.0/src/remote/libvirtd.service.in @@ -17,6 +17,8 @@ After=local-fs.target After=remote-fs.target After=systemd-logind.service ++++++ suse-libvirtd-sysconfig-settings.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.727772867 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.727772867 +0200 @@ -1,9 +1,9 @@ Adjust libvirtd sysconfig file to conform to SUSE standards -Index: libvirt-4.6.0/src/remote/libvirtd.sysconf +Index: libvirt-4.7.0/src/remote/libvirtd.sysconf =================================================================== ---- libvirt-4.6.0.orig/src/remote/libvirtd.sysconf -+++ libvirt-4.6.0/src/remote/libvirtd.sysconf +--- libvirt-4.7.0.orig/src/remote/libvirtd.sysconf ++++ libvirt-4.7.0/src/remote/libvirtd.sysconf @@ -1,16 +1,25 @@ +## Path: System/Virtualization/libvirt + ++++++ suse-ovmf-paths.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.735772860 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.735772860 +0200 @@ -1,9 +1,9 @@ Adjust paths of OVMF firmwares on SUSE distros -Index: libvirt-4.6.0/src/qemu/qemu.conf +Index: libvirt-4.7.0/src/qemu/qemu.conf =================================================================== ---- libvirt-4.6.0.orig/src/qemu/qemu.conf -+++ libvirt-4.6.0/src/qemu/qemu.conf +--- libvirt-4.7.0.orig/src/qemu/qemu.conf ++++ libvirt-4.7.0/src/qemu/qemu.conf @@ -769,10 +769,9 @@ security_default_confined = 0 # for x86_64 and i686, but it's AAVMF for aarch64. The libvirt default # follows this scheme. @@ -18,10 +18,10 @@ #] # The backend to use for handling stdout/stderr output from -Index: libvirt-4.6.0/src/qemu/qemu_conf.c +Index: libvirt-4.7.0/src/qemu/qemu_conf.c =================================================================== ---- libvirt-4.6.0.orig/src/qemu/qemu_conf.c -+++ libvirt-4.6.0/src/qemu/qemu_conf.c +--- libvirt-4.7.0.orig/src/qemu/qemu_conf.c ++++ libvirt-4.7.0/src/qemu/qemu_conf.c @@ -122,10 +122,9 @@ void qemuDomainCmdlineDefFree(qemuDomain #ifndef DEFAULT_LOADER_NVRAM @@ -36,10 +36,10 @@ #endif -Index: libvirt-4.6.0/src/security/virt-aa-helper.c +Index: libvirt-4.7.0/src/security/virt-aa-helper.c =================================================================== ---- libvirt-4.6.0.orig/src/security/virt-aa-helper.c -+++ libvirt-4.6.0/src/security/virt-aa-helper.c +--- libvirt-4.7.0.orig/src/security/virt-aa-helper.c ++++ libvirt-4.7.0/src/security/virt-aa-helper.c @@ -515,7 +515,8 @@ valid_path(const char *path, const bool "/usr/share/ovmf/", /* for OVMF images */ "/usr/share/AAVMF/", /* for AAVMF images */ ++++++ suse-qemu-conf.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.743772853 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.743772853 +0200 @@ -7,10 +7,10 @@ etc.), but for now they are all lumped together in this single patch. -Index: libvirt-4.6.0/src/qemu/qemu.conf +Index: libvirt-4.7.0/src/qemu/qemu.conf =================================================================== ---- libvirt-4.6.0.orig/src/qemu/qemu.conf -+++ libvirt-4.6.0/src/qemu/qemu.conf +--- libvirt-4.7.0.orig/src/qemu/qemu.conf ++++ libvirt-4.7.0/src/qemu/qemu.conf @@ -414,11 +414,20 @@ # isolation, but it cannot appear in a list of drivers. # ++++++ suse-virtlockd-sysconfig-settings.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.763772836 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.763772836 +0200 @@ -1,9 +1,9 @@ Adjust virtlockd sysconfig file to conform to SUSE standards -Index: libvirt-4.6.0/src/locking/virtlockd.sysconf +Index: libvirt-4.7.0/src/locking/virtlockd.sysconf =================================================================== ---- libvirt-4.6.0.orig/src/locking/virtlockd.sysconf -+++ libvirt-4.6.0/src/locking/virtlockd.sysconf +--- libvirt-4.7.0.orig/src/locking/virtlockd.sysconf ++++ libvirt-4.7.0/src/locking/virtlockd.sysconf @@ -1,3 +1,7 @@ +## Path: System/Virtualization/virtlockd + ++++++ suse-virtlogd-sysconfig-settings.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.771772830 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.771772830 +0200 @@ -1,9 +1,9 @@ Adjust virtlogd sysconfig file to conform to SUSE standards -Index: libvirt-4.6.0/src/logging/virtlogd.sysconf +Index: libvirt-4.7.0/src/logging/virtlogd.sysconf =================================================================== ---- libvirt-4.6.0.orig/src/logging/virtlogd.sysconf -+++ libvirt-4.6.0/src/logging/virtlogd.sysconf +--- libvirt-4.7.0.orig/src/logging/virtlogd.sysconf ++++ libvirt-4.7.0/src/logging/virtlogd.sysconf @@ -1,3 +1,7 @@ +## Path: System/Virtualization/virtlogd + ++++++ xen-pv-cdrom.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.779772822 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.783772819 +0200 @@ -1,7 +1,7 @@ -Index: libvirt-4.6.0/src/xenconfig/xen_sxpr.c +Index: libvirt-4.7.0/src/xenconfig/xen_sxpr.c =================================================================== ---- libvirt-4.6.0.orig/src/xenconfig/xen_sxpr.c -+++ libvirt-4.6.0/src/xenconfig/xen_sxpr.c +--- libvirt-4.7.0.orig/src/xenconfig/xen_sxpr.c ++++ libvirt-4.7.0/src/xenconfig/xen_sxpr.c @@ -387,7 +387,7 @@ xenParseSxprVifRate(const char *rate, un static int xenParseSxprDisks(virDomainDefPtr def, ++++++ xen-sxpr-disk-type.patch ++++++ --- /var/tmp/diff_new_pack.xHiaYM/_old 2018-10-01 09:07:44.787772816 +0200 +++ /var/tmp/diff_new_pack.xHiaYM/_new 2018-10-01 09:07:44.791772812 +0200 @@ -6,10 +6,10 @@ https://bugzilla.suse.com/show_bug.cgi?id=938228 -Index: libvirt-4.6.0/src/xenconfig/xen_sxpr.c +Index: libvirt-4.7.0/src/xenconfig/xen_sxpr.c =================================================================== ---- libvirt-4.6.0.orig/src/xenconfig/xen_sxpr.c -+++ libvirt-4.6.0/src/xenconfig/xen_sxpr.c +--- libvirt-4.7.0.orig/src/xenconfig/xen_sxpr.c ++++ libvirt-4.7.0/src/xenconfig/xen_sxpr.c @@ -501,10 +501,11 @@ xenParseSxprDisks(virDomainDefPtr def, omnipotent, we can revisit this, perhaps stat()'ing the src file in question */