[libvirt] [PATCH] nwfilter: don't crash listing filters in unprivileged daemon
by Daniel P. Berrange
The unprivileged libvirtd does not support nwfilter config, by leaves the
driver active. It is supposed to result in all APIs being an effective
no-op, but several APIs rely on driver->nwfilters being non-NULL, or they
will reference a NULL pointer. Rather than adding checks for NULL in many
places, just make sure driver->nwfilters is always initialized.
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
src/nwfilter/nwfilter_driver.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
index 2f9a51c405..89b767fe11 100644
--- a/src/nwfilter/nwfilter_driver.c
+++ b/src/nwfilter/nwfilter_driver.c
@@ -189,6 +189,8 @@ nwfilterStateInitialize(bool privileged,
/* remember that we are going to use firewalld */
driver->watchingFirewallD = (sysbus != NULL);
driver->privileged = privileged;
+ if (!(driver->nwfilters = virNWFilterObjListNew()))
+ goto error;
if (!privileged)
return 0;
@@ -244,9 +246,6 @@ nwfilterStateInitialize(bool privileged,
goto error;
}
- if (!(driver->nwfilters = virNWFilterObjListNew()))
- goto error;
-
if (virNWFilterObjListLoadAllConfigs(driver->nwfilters, driver->configDir) < 0)
goto error;
@@ -271,6 +270,7 @@ nwfilterStateInitialize(bool privileged,
virNWFilterIPAddrMapShutdown();
err_free_driverstate:
+ virNWFilterObjListFree(driver->nwfilters);
VIR_FREE(driver);
return -1;
--
2.14.3
7 years, 4 months
[libvirt] [PATCH] maint: Bump version number to 4.0.0
by Andrea Bolognani
As documented in
https://libvirt.org/downloads.html#schedule
https://libvirt.org/downloads.html#numbering
the next release will happen in the middle of January 2018 and,
being the first release of a new year, will bring a brand new
major version number with it.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
Pushed under the "I can't believe you got it wrong, Michal!" rule.
configure.ac | 2 +-
docs/news.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index ec98e83d7..fba4e4bf5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,7 +16,7 @@ dnl You should have received a copy of the GNU Lesser General Public
dnl License along with this library. If not, see
dnl <http://www.gnu.org/licenses/>.
-AC_INIT([libvirt], [3.11.0], [libvir-list(a)redhat.com], [], [https://libvirt.org])
+AC_INIT([libvirt], [4.0.0], [libvir-list(a)redhat.com], [], [https://libvirt.org])
AC_CONFIG_SRCDIR([src/libvirt.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
diff --git a/docs/news.xml b/docs/news.xml
index 72bdea220..0ec9857e2 100644
--- a/docs/news.xml
+++ b/docs/news.xml
@@ -33,7 +33,7 @@
-->
<libvirt>
- <release version="v3.11.0" date="unreleased">
+ <release version="v4.0.0" date="unreleased">
<section title="New features">
</section>
<section title="Improvements">
--
2.14.3
7 years, 4 months
[libvirt] [PATCH 0/3] macOS build and CI fixes
by Andrea Bolognani
The first one is technically a build breaker, but only affects
development builds so it can wait the end of the freeze I guess.
The second patch gets Travis to the point where the build failure
would actually show up, and the last one is just a small cleanup.
Andrea Bolognani (3):
util: gettid() is Linux-specific
travis: Upgrade brew packages
travis: Don't try to install brew packages twice
.travis.yml | 2 +-
src/util/virthread.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--
2.14.3
7 years, 4 months
[libvirt] [PATCH 0/4] tests: Drop more useless prefixes
by Michal Privoznik
Yet again, trimmed patches, whole patches can be found here:
https://github.com/zippy2/libvirt/commits/qemuxml2xmldata
Michal Privoznik (4):
test: Drop useless prefix for qemuagent test data
test: Drop useless prefix for qemuargv2xml test data
test: Drop useless prefix for qemuxml2xmldata test data
test: Drop useless prefix for genericxml2xml test data
tests/genericxml2xmltest.c | 4 ++--
tests/qemuagenttest.c | 2 +-
tests/qemuargv2xmltest.c | 4 ++--
tests/qemuxml2xmltest.c | 8 ++++----
<trim/>
684 files changed, 15 insertions(+), 15 deletions(-)
--
2.13.6
7 years, 4 months
[libvirt] libvirt 3.9.0 locks (was libvirt 3.5.0 locks)
by Vasiliy Tolstov
Hi again. I'm still try to determine why my libvirtd locks, this is
another portion of gdb stuff:
https://gist.github.com/vtolstov/ae8c4a67e15b2fbd14bbb95c226fb427
error looks in logs like:
Dec 01 12:35:49 cn04 libvirtd[1171]: 2017-12-01 09:35:49.637+0000:
28063: error : qemuDomainObjBeginJobInternal:4403 : Timed out during
operation: cannot acquire state change lock (held by
remoteDispatchConnectGetAllDomainStats)
Dec 01 12:35:49 cn04 libvirtd[1171]: 2017-12-01 09:35:49.637+0000:
28063: warning : qemuDomainObjBeginJobInternal:4391 : Cannot start job
(destroy, none) for domain 225560-20001; current job is (query, none)
owned by (1180 remoteDispatchConnectGetAllDomainStats, 0 <null>) for
(30s, 0s)
and virsh list says that domain in shutdown state (but qemu process
already exited).
Please, help me to solve this issue.
--
Vasiliy Tolstov,
e-mail: v.tolstov(a)selfip.ru
7 years, 4 months
[libvirt] [PATCH for 3.11 0/2] qemuxml2argvdata: Drop useless prefix for test cases
by Michal Privoznik
The patches are trimmed out a lot to fit the size limit of our list. Anyway,
the interesting bits are kept and also you can find the patches at my github:
https://github.com/zippy2/libvirt/commits/qemuxml2argvdata
If this approach is ACKed, I can continue because some other files suffer the
same problem (e.g. qemuxml2xmloutdata).
Michal Privoznik (2):
tests: Drop qemuxml2argv- prefix for qemuxml2argv-*.xml test cases
tests: Drop qemuxml2argv- prefix for qemuxml2argv test cases
tests/qemuxml2argvtest.c | 4 ++--
tests/qemuxml2xmltest.c | 2 +-
<very long list of renames/>
1481 files changed, 57 insertions(+), 57 deletions(-)
--
2.13.6
7 years, 4 months
[libvirt] [PATCH v4 0/3] Move ide validation from qemuBuildControllerDevStr to qemuDomainDeviceDefValidate
by Lin Ma
Validate IDE controllers in qemuDomainDeviceDefValidate for reminding users earlier.
v3->v4:
Drop changes in tests/qemuxml2argvdata/qemuxml2argv-disk-floppy-pseries.args
Merged patch #3 and #4 for avoiding git bisect failure.
Lin Ma (3):
tests: qemuxml2argv: Use scsi controller instead of ide in pseries
tests: qemuhotplugtest: Drop ide controller in ccw
qemu_domain: Error out earlier when configuring IDE controller
incorrectly
src/qemu/qemu_command.c | 17 -----------
src/qemu/qemu_domain.c | 35 +++++++++++++++++++++-
.../qemuhotplug-base-ccw-live+ccw-virtio.xml | 4 ---
...ive-with-2-ccw-virtio+ccw-virtio-1-explicit.xml | 4 ---
...live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml | 4 ---
...qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml | 4 ---
...-live-with-ccw-virtio+ccw-virtio-2-explicit.xml | 4 ---
...-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml | 4 ---
.../qemuhotplug-base-ccw-live-with-ccw-virtio.xml | 4 ---
.../qemuhotplug-base-ccw-live.xml | 4 ---
.../qemuxml2argv-disk-floppy-pseries.xml | 4 +--
11 files changed, 36 insertions(+), 52 deletions(-)
--
2.14.0
7 years, 4 months
[libvirt] [RESEND PATCH] qemu: Add support for hot unplug redirdev device
by Chen Hanxiao
From: Chen Hanxiao <chenhanxiao(a)gmail.com>
We lacked of hot unplugging redirdev device.
This patch add support for it.
We could use detach-device --live now.
Signed-off-by: Chen Hanxiao <chenhanxiao(a)gmail.com>
---
rebase on 3.10
src/qemu/qemu_driver.c | 4 +-
src/qemu/qemu_hotplug.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_hotplug.h | 3 ++
3 files changed, 117 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 5eae7d24a..e32f6e738 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -7787,6 +7787,9 @@ qemuDomainDetachDeviceLive(virDomainObjPtr vm,
case VIR_DOMAIN_DEVICE_INPUT:
ret = qemuDomainDetachInputDevice(vm, dev->data.input);
break;
+ case VIR_DOMAIN_DEVICE_REDIRDEV:
+ ret = qemuDomainDetachRedirdevDevice(driver, vm, dev->data.redirdev);
+ break;
case VIR_DOMAIN_DEVICE_FS:
case VIR_DOMAIN_DEVICE_SOUND:
@@ -7796,7 +7799,6 @@ qemuDomainDetachDeviceLive(virDomainObjPtr vm,
case VIR_DOMAIN_DEVICE_SMARTCARD:
case VIR_DOMAIN_DEVICE_MEMBALLOON:
case VIR_DOMAIN_DEVICE_NVRAM:
- case VIR_DOMAIN_DEVICE_REDIRDEV:
case VIR_DOMAIN_DEVICE_NONE:
case VIR_DOMAIN_DEVICE_TPM:
case VIR_DOMAIN_DEVICE_PANIC:
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index cbc7af59b..87ce64505 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -4365,6 +4365,74 @@ qemuDomainRemoveInputDevice(virDomainObjPtr vm,
return 0;
}
+static int
+qemuDomainRemoveRedirdevDevice(virQEMUDriverPtr driver,
+ virDomainObjPtr vm,
+ virDomainRedirdevDefPtr redirdev)
+{
+ qemuDomainObjPrivatePtr priv = vm->privateData;
+ virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ virObjectEventPtr event;
+ char *charAlias = NULL;
+ char *tlsAlias = NULL;
+ char *secAlias = NULL;
+ ssize_t idx;
+ int ret = -1;
+
+ VIR_DEBUG("Removing redirdev device %s from domain %p %s",
+ redirdev->info.alias, vm, vm->def->name);
+
+ if (!(charAlias = qemuAliasChardevFromDevAlias(redirdev->info.alias)))
+ goto cleanup;
+
+ if (redirdev->source->type == VIR_DOMAIN_CHR_TYPE_TCP &&
+ redirdev->source->data.tcp.haveTLS == VIR_TRISTATE_BOOL_YES) {
+
+ if (!(tlsAlias = qemuAliasTLSObjFromSrcAlias(charAlias)))
+ goto cleanup;
+
+ /* Best shot at this as the secinfo is destroyed after process launch
+ * and this path does not recreate it. Thus, if the config has the
+ * secret UUID and we have a serial TCP chardev, then formulate a
+ * secAlias which we'll attempt to destroy. */
+ if (cfg->chardevTLSx509secretUUID &&
+ !(secAlias = qemuDomainGetSecretAESAlias(charAlias, false)))
+ goto cleanup;
+ }
+
+ qemuDomainObjEnterMonitor(driver, vm);
+ /* Usually device_del will remove related chardev as well,
+ * So we don't need to check its return value.
+ */
+ ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias));
+
+ if (tlsAlias)
+ ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias));
+ if (secAlias)
+ ignore_value(qemuMonitorDelObject(priv->mon, secAlias));
+
+ if (qemuDomainObjExitMonitor(driver, vm) < 0)
+ goto cleanup;
+
+ virDomainAuditRedirdev(vm, redirdev, "detach", true);
+
+ event = virDomainEventDeviceRemovedNewFromObj(vm, redirdev->info.alias);
+ qemuDomainEventQueue(driver, event);
+
+ if ((idx = virDomainRedirdevDefFind(vm->def, redirdev)) >= 0)
+ virDomainRedirdevDefRemove(vm->def, idx);
+ qemuDomainReleaseDeviceAddress(vm, &redirdev->info, NULL);
+ virDomainRedirdevDefFree(redirdev);
+
+ ret = 0;
+
+ cleanup:
+ VIR_FREE(charAlias);
+ VIR_FREE(tlsAlias);
+ VIR_FREE(secAlias);
+ return ret;
+}
+
int
qemuDomainRemoveDevice(virQEMUDriverPtr driver,
@@ -5102,6 +5170,49 @@ qemuDomainDetachWatchdog(virQEMUDriverPtr driver,
return ret;
}
+int
+qemuDomainDetachRedirdevDevice(virQEMUDriverPtr driver,
+ virDomainObjPtr vm,
+ virDomainRedirdevDefPtr redirdev)
+{
+ int ret = -1;
+ qemuDomainObjPrivatePtr priv = vm->privateData;
+ virDomainDefPtr vmdef = vm->def;
+ virDomainRedirdevDefPtr tmpRedirdevDef;
+ ssize_t idx;
+
+ if ((idx = virDomainRedirdevDefFind(vmdef, redirdev)) < 0) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("no matching redirdev was not found"));
+ return -1;
+ }
+
+ tmpRedirdevDef = vm->def->redirdevs[idx];
+
+ if (!tmpRedirdevDef->info.alias) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("alias not set for redirdev device"));
+ return -1;
+ }
+
+ qemuDomainMarkDeviceForRemoval(vm, &tmpRedirdevDef->info);
+
+ qemuDomainObjEnterMonitor(driver, vm);
+ if (qemuMonitorDelDevice(priv->mon, tmpRedirdevDef->info.alias) < 0) {
+ ignore_value(qemuDomainObjExitMonitor(driver, vm));
+ goto cleanup;
+ }
+ if (qemuDomainObjExitMonitor(driver, vm) < 0)
+ goto cleanup;
+
+ if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1)
+ ret = qemuDomainRemoveRedirdevDevice(driver, vm, tmpRedirdevDef);
+
+ cleanup:
+ qemuDomainResetDeviceRemoval(vm);
+ return ret;
+}
+
int
qemuDomainDetachNetDevice(virQEMUDriverPtr driver,
diff --git a/src/qemu/qemu_hotplug.h b/src/qemu/qemu_hotplug.h
index 3e0d618e0..6c642c4fd 100644
--- a/src/qemu/qemu_hotplug.h
+++ b/src/qemu/qemu_hotplug.h
@@ -125,6 +125,9 @@ int qemuDomainDetachShmemDevice(virQEMUDriverPtr driver,
int qemuDomainDetachWatchdog(virQEMUDriverPtr driver,
virDomainObjPtr vm,
virDomainWatchdogDefPtr watchdog);
+int qemuDomainDetachRedirdevDevice(virQEMUDriverPtr driver,
+ virDomainObjPtr vm,
+ virDomainRedirdevDefPtr redirdev);
int qemuDomainAttachInputDevice(virQEMUDriverPtr driver,
virDomainObjPtr vm,
--
2.14.3
7 years, 4 months
[libvirt] [PATCH 1/2] libxl: add support for multiple IP addresses
by Marek Marczykowski-Górecki
vif-* scripts support it for a long time, and expect addresses to be
separated by spaces. Add appropriate support to libxl driver.
---
src/libxl/libxl_conf.c | 29 +++++++++++++++++++++++++++--
src/libxl/libxl_domain.c | 12 ------------
2 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 2a9be69..f84ffc6 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -1067,6 +1067,31 @@ libxlUpdateDiskDef(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk)
ignore_value(virDomainDiskSetDriver(l_disk, driver));
}
+static char *
+libxlMakeIPList(virNetDevIPInfoPtr guestIP)
+{
+ size_t i;
+ char **address_array;
+ char *ret = NULL;
+
+ if (VIR_ALLOC_N(address_array, guestIP->nips + 1) < 0)
+ return NULL;
+
+ for (i = 0; i < guestIP->nips; i++) {
+ address_array[i] = virSocketAddrFormat(&guestIP->ips[i]->address);
+ if (!address_array[i])
+ goto cleanup;
+ }
+ address_array[guestIP->nips] = NULL;
+
+ ret = virStringListJoin((const char**)address_array, " ");
+
+ cleanup:
+ while (i > 0)
+ VIR_FREE(address_array[--i]);
+ return ret;
+}
+
int
libxlMakeNic(virDomainDefPtr def,
virDomainNetDefPtr l_nic,
@@ -1144,7 +1169,7 @@ libxlMakeNic(virDomainDefPtr def,
if (VIR_STRDUP(x_nic->script, l_nic->script) < 0)
goto cleanup;
if (l_nic->guestIP.nips > 0) {
- x_nic->ip = virSocketAddrFormat(&l_nic->guestIP.ips[0]->address);
+ x_nic->ip = libxlMakeIPList(&l_nic->guestIP);
if (!x_nic->ip)
goto cleanup;
}
@@ -1160,7 +1185,7 @@ libxlMakeNic(virDomainDefPtr def,
}
if (l_nic->guestIP.nips > 0) {
- x_nic->ip = virSocketAddrFormat(&l_nic->guestIP.ips[0]->address);
+ x_nic->ip = libxlMakeIPList(&l_nic->guestIP);
if (!x_nic->ip)
goto cleanup;
}
diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c
index d054b07..395c8a9 100644
--- a/src/libxl/libxl_domain.c
+++ b/src/libxl/libxl_domain.c
@@ -294,18 +294,6 @@ libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
def->os.type != VIR_DOMAIN_OSTYPE_HVM)
dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN;
- if (dev->type == VIR_DOMAIN_DEVICE_NET &&
- (dev->data.net->type == VIR_DOMAIN_NET_TYPE_BRIDGE ||
- dev->data.net->type == VIR_DOMAIN_NET_TYPE_ETHERNET ||
- dev->data.net->type == VIR_DOMAIN_NET_TYPE_NETWORK)) {
- if (dev->data.net->guestIP.nips > 1) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("multiple IP addresses not supported on device type %s"),
- virDomainNetTypeToString(dev->data.net->type));
- return -1;
- }
- }
-
if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV ||
(dev->type == VIR_DOMAIN_DEVICE_NET &&
dev->data.net->type == VIR_DOMAIN_NET_TYPE_HOSTDEV)) {
base-commit: 9f0ccc717ba9026c30ce38951a354dd66fa12e3b
--
git-series 0.9.1
7 years, 4 months