[libvirt] [RFC PATCH v2 0/3] qemu: RDMA live migration support
by mrhines@linux.vnet.ibm.com
From: "Michael R. Hines" <mrhines(a)us.ibm.com>
Changes since v1:
1. This series uses 'rdma' instead of 'x-rdma', even though QEMU
has has not yet renamed URI for live migraiton yet, but this
series is just an RFC, so at least we can get some agreement.
2. We've fixed the job stats to be in the right place instead
of breaking the hard-coded api.
Michael R. Hines (3):
qemu: Expose additional timing metrics for 'setup' and 'mbps'
qemu: RDMA migration support using 'rdma' URI
qemu: memory pre-pinning support for RDMA migration
include/libvirt/libvirt.h.in | 16 ++++
src/qemu/qemu_capabilities.c | 13 ++++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 8 ++
src/qemu/qemu_driver.c | 14 ++++
src/qemu/qemu_migration.c | 174 +++++++++++++++++++++++++++++++++++++------
src/qemu/qemu_migration.h | 3 +-
src/qemu/qemu_monitor.c | 5 +-
src/qemu/qemu_monitor.h | 14 ++++
src/qemu/qemu_monitor_json.c | 8 ++
src/util/viruri.c | 7 +-
tools/virsh-domain.c | 7 ++
12 files changed, 244 insertions(+), 26 deletions(-)
--
1.8.1.2
10 years, 7 months
[libvirt] [PATCH] Disable libvirtd by default when building on Win32
by Daniel P. Berrange
We don't support building libvirtd on Win32 since we lack the
fork/exec feature needed for the stateful drivers. Disable this
by default, so users can just do 'mingw32-configure' with no
special args required.
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
autobuild.sh | 6 ++----
configure.ac | 6 ++++++
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/autobuild.sh b/autobuild.sh
index f682b51..4d9f616 100755
--- a/autobuild.sh
+++ b/autobuild.sh
@@ -85,8 +85,7 @@ if test -x /usr/bin/i686-w64-mingw32-gcc ; then
--host=i686-w64-mingw32 \
--prefix="$AUTOBUILD_INSTALL_ROOT/i686-w64-mingw32/sys-root/mingw" \
--enable-expensive-tests \
- --enable-werror \
- --without-libvirtd
+ --enable-werror
make
make install
@@ -105,8 +104,7 @@ if test -x /usr/bin/x86_64-w64-mingw32-gcc ; then
--host=x86_64-w64-mingw32 \
--prefix="$AUTOBUILD_INSTALL_ROOT/x86_64-w64-mingw32/sys-root/mingw" \
--enable-expensive-tests \
- --enable-werror \
- --without-libvirtd
+ --enable-werror
make
make install
diff --git a/configure.ac b/configure.ac
index ea85851..3371b46 100644
--- a/configure.ac
+++ b/configure.ac
@@ -175,6 +175,7 @@ case $host in
*-*-linux*) with_linux=yes ;;
*-*-darwin*) with_osx=yes ;;
*-*-freebsd*) with_freebsd=yes ;;
+ *-*-mingw* | *-*-msvc* ) with_win=yes ;;
esac
if test $with_linux = no; then
@@ -194,6 +195,11 @@ fi
AM_CONDITIONAL([WITH_LINUX], [test "$with_linux" = "yes"])
AM_CONDITIONAL([WITH_FREEBSD], [test "$with_freebsd" = "yes"])
+# We don't support the daemon yet
+if test "$with_win" = "yes" ; then
+ with_libvirtd=no
+fi
+
# The daemon requires remote support. Likewise, if we are not using
# RPC, we don't need several libraries.
if test "$with_remote" = "no" ; then
--
1.9.0
10 years, 7 months
[libvirt] [PATCH v2] Don't use SO_REUSEADDR on Win32 platforms
by Daniel P. Berrange
SO_REUSEADDR on Windows is actually akin to SO_REUSEPORT
on Linux/BSD. ie it allows 2 apps to listen to the same
port at once. Thus we must not set it on Win32 platforms
See http://msdn.microsoft.com/en-us/library/windows/desktop/ms740621.aspx
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
src/libvirt_private.syms | 1 +
src/rpc/virnetsocket.c | 7 ++-----
src/util/virportallocator.c | 4 +---
src/util/virutil.c | 23 +++++++++++++++++++++++
src/util/virutil.h | 1 +
5 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 5788468..ee2f57b 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -2059,6 +2059,7 @@ virSetCloseExec;
virSetDeviceUnprivSGIO;
virSetInherit;
virSetNonBlock;
+virSetSockReuseAddr;
virSetUIDGID;
virSetUIDGIDWithCaps;
virStrIsPrint;
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
index 2e94a6c..a7e1783 100644
--- a/src/rpc/virnetsocket.c
+++ b/src/rpc/virnetsocket.c
@@ -255,8 +255,7 @@ int virNetSocketNewListenTCP(const char *nodename,
goto error;
}
- int opt = 1;
- if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) {
+ if (virSetSockReuseAddr(fd) < 0) {
virReportSystemError(errno, "%s", _("Unable to enable port reuse"));
goto error;
}
@@ -460,15 +459,13 @@ int virNetSocketNewConnectTCP(const char *nodename,
runp = ai;
while (runp) {
- int opt = 1;
-
if ((fd = socket(runp->ai_family, runp->ai_socktype,
runp->ai_protocol)) < 0) {
virReportSystemError(errno, "%s", _("Unable to create socket"));
goto error;
}
- if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) {
+ if (virSetSockReuseAddr(fd) < 0) {
VIR_WARN("Unable to enable port reuse");
}
diff --git a/src/util/virportallocator.c b/src/util/virportallocator.c
index ed7bdc2..b68133a 100644
--- a/src/util/virportallocator.c
+++ b/src/util/virportallocator.c
@@ -116,7 +116,6 @@ static int virPortAllocatorBindToPort(bool *used,
struct sockaddr* addr;
size_t addrlen;
int v6only = 1;
- int reuse = 1;
int ret = -1;
int fd = -1;
bool ipv6 = false;
@@ -143,8 +142,7 @@ static int virPortAllocatorBindToPort(bool *used,
goto cleanup;
}
- if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void*)&reuse,
- sizeof(reuse)) < 0) {
+ if (virSetSockReuseAddr(fd) < 0) {
virReportSystemError(errno, "%s",
_("Unable to set socket reuse addr flag"));
goto cleanup;
diff --git a/src/util/virutil.c b/src/util/virutil.c
index 9be1590..65b10b8 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -136,6 +136,29 @@ int virSetCloseExec(int fd)
return virSetInherit(fd, false);
}
+#ifdef WIN32
+int virSetSockReuseAddr(int fd ATTRIBUTE_UNUSED)
+{
+ /*
+ * SO_REUSEADDR on Windows is actually akin to SO_REUSEPORT
+ * on Linux/BSD. ie it allows 2 apps to listen to the same
+ * port at once which is certainly not what we want here.
+ *
+ * Win32 sockets have Linux/BSD-like SO_REUSEADDR behaviour
+ * by default, so we can be a no-op.
+ *
+ * http://msdn.microsoft.com/en-us/library/windows/desktop/ms740621.aspx
+ */
+ return 0;
+}
+#else
+int virSetSockReuseAddr(int fd)
+{
+ int opt = 1;
+ return setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
+#endif
+}
+
int
virPipeReadUntilEOF(int outfd, int errfd,
char **outbuf, char **errbuf) {
diff --git a/src/util/virutil.h b/src/util/virutil.h
index 1f2efd5..2bb74e2 100644
--- a/src/util/virutil.h
+++ b/src/util/virutil.h
@@ -42,6 +42,7 @@ int virSetBlocking(int fd, bool blocking) ATTRIBUTE_RETURN_CHECK;
int virSetNonBlock(int fd) ATTRIBUTE_RETURN_CHECK;
int virSetInherit(int fd, bool inherit) ATTRIBUTE_RETURN_CHECK;
int virSetCloseExec(int fd) ATTRIBUTE_RETURN_CHECK;
+int virSetSockReuseAddr(int fd) ATTRIBUTE_RETURN_CHECK;
int virPipeReadUntilEOF(int outfd, int errfd,
char **outbuf, char **errbuf);
--
1.9.0
10 years, 7 months
[libvirt] [PATCH] Remove bogus ATTRIBUTE_NONNULL from virFirewallAddRuleFull
by Daniel P. Berrange
The virFirewallAddRuleFull method originally had a single
compulsory virFirewallQueryCallback parameter. During dev
work though the ignoreErrors parameter was added and the
callback parameter made optional. The ATTRIBUTE_NONNULL
annotation was never removed though.
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
src/util/virfirewall.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/util/virfirewall.h b/src/util/virfirewall.h
index 5ca66fa..1129219 100644
--- a/src/util/virfirewall.h
+++ b/src/util/virfirewall.h
@@ -59,7 +59,7 @@ virFirewallRulePtr virFirewallAddRuleFull(virFirewallPtr firewall,
virFirewallQueryCallback cb,
void *opaque,
...)
- ATTRIBUTE_NONNULL(3) ATTRIBUTE_SENTINEL;
+ ATTRIBUTE_SENTINEL;
void virFirewallRemoveRule(virFirewallPtr firewall,
virFirewallRulePtr rule);
--
1.9.0
10 years, 7 months
[libvirt] [PATCH] Recheck disk backing chains after snapshot
by Jiri Denemark
When a snapshot operation finishes we have to recheck the backing chain
of all disks involved in the snapshot. And we need to do that even if
the operation failed because some of the disks might have changed if
QEMU did not support transactions.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
Notes:
- BlockRebase and BlockCommit already recheck the backing chain when we
get an event about a completed block job (in qemuProcessHandleBlockJob)
src/qemu/qemu_driver.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 67ba487..492fcc1 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -12942,6 +12942,7 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver,
bool persist = false;
bool reuse = (flags & VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT) != 0;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ virErrorPtr orig_err = NULL;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID,
@@ -13033,6 +13034,17 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver,
}
cleanup:
+ /* recheck backing chains of all disks involved in the snapshot */
+ orig_err = virSaveLastError();
+ for (i = 0; i < snap->def->ndisks; i++) {
+ if (snap->def->disks[i].snapshot == VIR_DOMAIN_SNAPSHOT_LOCATION_NONE)
+ continue;
+ qemuDomainDetermineDiskChain(driver, vm, vm->def->disks[i], true);
+ }
+ if (orig_err) {
+ virSetError(orig_err);
+ virFreeError(orig_err);
+ }
if (ret == 0 || !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_TRANSACTION)) {
if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm) < 0 ||
--
1.9.2
10 years, 7 months
[libvirt] [PATCH v2] libxl: Support PV consoles
by Ian Campbell
Currently the driver only exposes the ability to connect to the serial console
of a Xen guest, which doesn't work for a PV guest. Since for an HVM guest the
serial devices are duplicated as consoles it is sufficient to just use the
console devices unconditionally.
Tested with the following bit of config XML:
<domain type='xen'>
...
<devices>
<console type='pty'>
<target type='xen'/>
</console>
</devices>
</domain>
I have observed and tested this on ARM but I believe it also applies to x86 PV
guests.
Signed-off-by: Ian Campbell <ian.campbell(a)citrix.com>
Cc: Jim Fehlig <jfehlig(a)suse.com>
Cc: Dario Faggioli <dario.faggioli(a)citrix.com>
Cc: Clark Laughlin <clark.laughlin(a)linaro.org>
---
v2: Just use nconsoles unconditionally, they contain serial too
---
src/libxl/libxl_driver.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index a6ae8a1..535e7da 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -3780,6 +3780,7 @@ libxlDomainOpenConsole(virDomainPtr dom,
{
virDomainObjPtr vm = NULL;
int ret = -1;
+ libxl_console_type console_type = LIBXL_CONSOLE_TYPE_UNKNOWN;
virDomainChrDefPtr chr = NULL;
libxlDomainObjPrivatePtr priv;
char *console = NULL;
@@ -3807,8 +3808,8 @@ libxlDomainOpenConsole(virDomainPtr dom,
priv = vm->privateData;
- if (vm->def->nserials)
- chr = vm->def->serials[0];
+ if (vm->def->nconsoles)
+ chr = vm->def->consoles[0];
if (!chr) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -3824,7 +3825,12 @@ libxlDomainOpenConsole(virDomainPtr dom,
goto cleanup;
}
- ret = libxl_primary_console_get_tty(priv->ctx, vm->def->id, &console);
+ console_type =
+ (chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL ?
+ LIBXL_CONSOLE_TYPE_SERIAL : LIBXL_CONSOLE_TYPE_PV);
+
+ ret = libxl_console_get_tty(priv->ctx, vm->def->id, chr->target.port,
+ console_type, &console);
if (ret)
goto cleanup;
--
1.7.10.4
10 years, 8 months
[libvirt] [PATCH] add flag to enforce hugepage backing of guest RAM
by Marcelo Tosatti
Add an element named "strict-hugepages" to control whether to
refuse guest initialization in case hugepage allocation cannot
be performed.
Signed-off-by: Marcelo Tosatti <mtosatti(a)redhat.com>
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index ff50214..e79f5e6 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -632,6 +632,9 @@
<dt><code>hugepages</code></dt>
<dd>This tells the hypervisor that the guest should have its memory
allocated using hugepages instead of the normal native page size.</dd>
+ <dt><code>strict-hugepages</code></dt>
+ <dd>This tells the hypervisor that the guest should refuse to start
+ in case of failure to allocate guest memory with hugepages</dd>
<dt><code>nosharepages</code></dt>
<dd>Instructs hypervisor to disable shared pages (memory merge, KSM) for
this domain. <span class="since">Since 1.0.6</span></dd>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 28e24f9..f16ef0b 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -11226,6 +11226,9 @@ virDomainDefParseXML(xmlDocPtr xml,
if (virXPathBoolean("boolean(./memoryBacking/locked)", ctxt))
def->mem.locked = true;
+ if ((node = virXPathNode("./memoryBacking/stricthugepages", ctxt)))
+ def->mem.strict_hugepages = true;
+
/* Extract blkio cgroup tunables */
if (virXPathUInt("string(./blkiotune/weight)", ctxt,
&def->blkio.weight) < 0)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index d8f2e49..8ea5cf0 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1977,6 +1977,7 @@ struct _virDomainDef {
unsigned long long max_balloon; /* in kibibytes */
unsigned long long cur_balloon; /* in kibibytes */
bool hugepage_backed;
+ bool strict_hugepages;
bool nosharepages;
bool locked;
int dump_core; /* enum virDomainMemDump */
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 96b8825..3f8d0a4 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -12133,10 +12133,9 @@ cleanup:
return def;
}
-
-static int qemuParseProcFileStrings(int pid_value,
- const char *name,
- char ***list)
+int qemuParseProcFileStrings(int pid_value,
+ const char *name,
+ char ***list)
{
char *path = NULL;
int ret = -1;
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
index de7683d..bcdfefa 100644
--- a/src/qemu/qemu_command.h
+++ b/src/qemu/qemu_command.h
@@ -226,7 +226,9 @@ virDomainDefPtr qemuParseCommandLinePid(virCapsPtr qemuCaps,
char **pidfile,
virDomainChrSourceDefPtr *monConfig,
bool *monJSON);
-
+int qemuParseProcFileStrings(int pid_value,
+ const char *name,
+ char ***list);
int qemuDomainAssignAddresses(virDomainDefPtr def,
virQEMUCapsPtr qemuCaps,
virDomainObjPtr obj)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 8bcd98e..cb8298e 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -25,6 +25,7 @@
#include <unistd.h>
#include <signal.h>
#include <sys/stat.h>
+#include <stdlib.h>
#if defined(__linux__)
# include <linux/capability.h>
#elif defined(__FreeBSD__)
@@ -3507,6 +3508,95 @@ error:
}
+/*
+ * Returns bool: whether to fail guest initialization.
+ *
+ */
+static bool qemuValidateStrictHugepage(virDomainObjPtr vm, virQEMUDriverConfigPtr cfg)
+{
+ bool ret = false;
+ char **maps = NULL;
+ int i;
+ char *buf;
+
+ if (!vm->def->mem.strict_hugepages)
+ return ret;
+
+ ret = true;
+
+ if (!vm->def->mem.hugepage_backed || !cfg->hugepagePath) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("strict huge pages depends on huge pages"));
+ return ret;
+ }
+
+ buf = malloc(strlen(cfg->hugepagePath) + 50);
+
+ /* The parser requires /proc/pid, which only exists on platforms
+ * like Linux where pid_t fits in int. */
+ if ((int) vm->pid != vm->pid ||
+ qemuParseProcFileStrings(vm->pid, "maps", &maps) < 0)
+ goto cleanup;
+
+ for (i = 0; maps && maps[i]; i++) {
+ char *endptr;
+ unsigned long start, end;
+ const char *map = maps[i];
+ bool found = false;
+
+ sprintf(buf, "%s/qemu_back_mem.pc.ram.", cfg->hugepagePath);
+ if (strstr(map,buf) != NULL)
+ found = true;
+
+ sprintf(buf, "%s/kvm.", cfg->hugepagePath);
+ if (strstr(map,buf) != NULL)
+ found = true;
+
+ if (!found)
+ continue;
+
+ errno = 0;
+ start = strtol(map, &endptr, 16);
+ if ((errno == ERANGE && (start == LONG_MAX || start == LONG_MIN))
+ || (errno != 0 && start == 0)) {
+ continue;
+ }
+
+ if (endptr && *endptr == '-')
+ endptr++;
+
+ if (!*endptr)
+ continue;
+
+ errno = 0;
+ end = strtol(endptr, NULL, 16);
+ if ((errno == ERANGE && (end == LONG_MAX || end == LONG_MIN))
+ || (errno != 0 && end == 0)) {
+ continue;
+ }
+
+ if (end-start >= vm->def->mem.max_balloon * 1024) {
+ ret = false;
+ break;
+ }
+ }
+
+ if (ret) {
+ /* FIXME: is VIR_ERR_NO_MEMORY to be used exclusively
+ * to reference libvirt allocation failures?
+ */
+ virReportError(VIR_ERR_NO_MEMORY, "%s",
+ _("guest memory not hugetlbfs backed"));
+ }
+
+cleanup:
+ for (i = 0; maps && maps[i]; i++)
+ VIR_FREE(maps[i]);
+ free(buf);
+ return ret;
+}
+
+
static bool
qemuValidateCpuMax(virDomainDefPtr def, virQEMUCapsPtr qemuCaps)
{
@@ -4071,6 +4161,13 @@ int qemuProcessStart(virConnectPtr conn,
goto cleanup;
}
+ /* enforce strict hugepage */
+ if (qemuValidateStrictHugepage(vm, cfg)) {
+ VIR_WARN("Failure to allocate hugepage backing for %s, exiting",
+ vm->def->name);
+ goto cleanup;
+ }
+
/* set default link states */
/* qemu doesn't support setting this on the command line, so
* enter the monitor */
10 years, 8 months
[libvirt] [PATCH] build: -avoid-version on libvirt_driver_nwfilter
by Dwight Engen
This fixes the following make rpm warning:
warning: Installed (but unpackaged) file(s) found:
/usr/lib64/libvirt/connection-driver/libvirt_driver_nwfilter.so.0
/usr/lib64/libvirt/connection-driver/libvirt_driver_nwfilter.so.0.0.0
Signed-off-by: Dwight Engen <dwight.engen(a)oracle.com>
---
src/Makefile.am | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/Makefile.am b/src/Makefile.am
index dd0abe7..e9dc9e0 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1543,6 +1543,7 @@ libvirt_driver_nwfilter_la_SOURCES =
libvirt_driver_nwfilter_la_LIBADD = libvirt_driver_nwfilter_impl.la
if WITH_DRIVER_MODULES
mod_LTLIBRARIES += libvirt_driver_nwfilter.la
+libvirt_driver_nwfilter_la_LDFLAGS = -module -avoid-version $(AM_LDFLAGS)
else ! WITH_DRIVER_MODULES
noinst_LTLIBRARIES += libvirt_driver_nwfilter.la
# Stateful, so linked to daemon instead
--
1.9.0
10 years, 8 months
[libvirt] [PATCHv2 0/4] network: fix active status & usage of inactive networks
by Laine Stump
The original patch series is here:
https://www.redhat.com/archives/libvir-list/2014-April/msg00454.html
This repost addresses problems pointed out by John Ferlan in his
review (and other things that I thought better of during the
revisions).
All 4 patches are required to address
https://bugzilla.redhat.com/show_bug.cgi?id=880483
The reported problem is that an interface using a currently-inactive
macvtap/hostdev network can be attached to a domain (addressed by
4/4). In order to make fixing that problem less, well, problematic,
the automatic inactivation of all macvtap/hostdev networks any time
libvirtd is restart must be addressed, and that is done in 1/4-3/4.
Part of fixing the latter problem is changing the network driver to
use /var/run for its status XML rather than /var/lib (2/4), which
could cause problems during upgrade (also addressed in 2/4) and in a
more limited sense downgrade (see the comments in 2/4 for why I
decided to not address those problems).
Laine Stump (4):
network: create statedir during driver initialization
network: change location of network state xml files
network: set macvtap/hostdev networks active if their state file
exists
network: centralize check for active network during interface attach
src/conf/network_conf.c | 1 +
src/lxc/lxc_driver.c | 21 +----
src/lxc/lxc_process.c | 18 +----
src/network/bridge_driver.c | 189 ++++++++++++++++++++++++++++++++++++--------
src/qemu/qemu_command.c | 18 +----
src/qemu/qemu_hotplug.c | 11 +--
6 files changed, 166 insertions(+), 92 deletions(-)
--
1.9.0
10 years, 8 months
[libvirt] [PATCH 0/3] Use virFileFindResource for libvirtd/virtlockd autostart
by Daniel P. Berrange
This small series converts the two places where we autostart
libvirtd/virtlockd over to use virFileFindResource so that
./tools/virsh -c qemu:///session will use the daemons from
the source tree instead of /usr/sbin
Daniel P. Berrange (3):
Use virFileFindResource to locate libvirtd daemon
Use virFileFindResource to locate virtlockd daemon
Make autostart of virtlockd actually work
src/locking/lock_daemon.c | 20 +++++++++++++++++++
src/locking/lock_driver_lockd.c | 25 +++++++----------------
src/remote/remote_driver.c | 44 ++++++-----------------------------------
3 files changed, 33 insertions(+), 56 deletions(-)
--
1.9.0
10 years, 8 months