RE: [PATCH] support for hotplug/hotunplug in test hypervisor
by Thanos Makatos
> -----Original Message-----
> From: Daniel P. Berrangé <berrange(a)redhat.com>
> Sent: Friday, October 27, 2023 6:13 PM
> To: Thanos Makatos <thanos.makatos(a)nutanix.com>
> Cc: devel(a)lists.libvirt.org
> Subject: Re: [PATCH] support for hotplug/hotunplug in test hypervisor
>
> On Fri, Oct 27, 2023 at 03:44:13PM +0000, Thanos Makatos wrote:
> > Signed-off-by: Thanos Makatos <thanos.makatos(a)nutanix.com>
> > ---
> > src/test/test_driver.c | 61
> ++++++++++++++++++++++++++++++++++++++++--
> > 1 file changed, 59 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/test/test_driver.c b/src/test/test_driver.c
> > index e87d7cfd44..6eda0dcc01 100644
> > --- a/src/test/test_driver.c
> > +++ b/src/test/test_driver.c
> > @@ -26,8 +26,6 @@
> > #include <unistd.h>
> > #include <sys/stat.h>
> > #include <libxml/xmlsave.h>
> > -
> > -
>
> Unrelated whitespace change.
Ack
>
> > #include "virerror.h"
> > #include "datatypes.h"
> > #include "test_driver.h"
> > @@ -10035,6 +10033,62 @@
> testConnectGetDomainCapabilities(virConnectPtr conn G_GNUC_UNUSED,
> > return virDomainCapsFormat(domCaps);
> > }
> >
> > +static int
> > +testVirDomainAttachDeviceFlags(virDomainPtr domain,
> > + const char *xml,
> > + unsigned int flags G_GNUC_UNUSED) {
> > +
> > + int ret = -1;
> > + virDomainObj *vm;
> > + testDriver *driver;
> > + virDomainDeviceDef *devConf;
> > +
> > + if (!(vm = testDomObjFromDomain(domain)))
> > + return -1;
> > +
> > + driver = domain->conn->privateData;
> > +
> > + if (!(devConf = virDomainDeviceDefParse(xml, vm->def, driver->xmlopt,
> > + NULL, 0)))
> > + goto out;
> > +
> > + VIR_APPEND_ELEMENT(vm->def->hostdevs, vm->def->nhostdevs,
> > + devConf->data.hostdev);
>
> Aling 'devConf' with the '(' above it
Ack
>
> > + virDomainDeviceDefFree(devConf);
> > + ret = 0;
> > +out:
> > + virDomainObjEndAPI(&vm);
> > + return ret;
> > +}
> > +
> > +static int
> > +testVirDomainAttachDevice(virDomainPtr domain, const char *xml)
> > +{
> > + return testVirDomainAttachDeviceFlags(domain, xml, 0);
> > +}
> > +
> > +static int
> > +testVirDomainDetachDeviceAlias(virDomainPtr domain,
> > + const char *alias,
> > + unsigned int flags __attribute__((unused)))
>
> Horizontal alignemtn is off, and also needs to be G_GNUC_UNUSED
> like the earlier method.
Ack
>
> > +{
> > + virDomainObj *vm;
> > + int i;
>
> size_t for loop iterators please.
Ack
>
> > + bool found = false;
> > +
> > + if (!(vm = testDomObjFromDomain(domain)))
> > + return -1;
> > +
> > + for (i = 0; i < vm->def->nhostdevs && !found; i++) {
> > + if (!strcmp(vm->def->hostdevs[i]->info->alias, alias)) {
> > + virDomainHostdevDefFree(vm->def->hostdevs[i]);
> > + VIR_DELETE_ELEMENT(vm->def->hostdevs, i, vm->def->nhostdevs);
> > + found = true;
> > + }
> > + }
> > + virDomainObjEndAPI(&vm);
> > + return found ? 0 : -1;
> > +}
> >
> > /*
> > * Test driver
> > @@ -10058,6 +10112,9 @@ static virHypervisorDriver testHypervisorDriver =
> {
> > .connectListDomains = testConnectListDomains, /* 0.1.1 */
> > .connectNumOfDomains = testConnectNumOfDomains, /* 0.1.1 */
> > .connectListAllDomains = testConnectListAllDomains, /* 0.9.13 */
> > + .domainAttachDevice = testVirDomainAttachDevice, /* 9.9.0 */
> > + .domainAttachDeviceFlags = testVirDomainAttachDeviceFlags, /* 9.9.0 */
> > + .domainDetachDeviceAlias = testVirDomainDetachDeviceAlias, /* 9.9.0 */
> > .domainCreateXML = testDomainCreateXML, /* 0.1.4 */
> > .domainCreateXMLWithFiles = testDomainCreateXMLWithFiles, /* 5.7.0 */
> > .domainLookupByID = testDomainLookupByID, /* 0.1.1 */
> > --
> > 2.27.0
> >
>
> With regards,
> Daniel
> --
> |: https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__berrange.com&d=DwIBaQ&c=s883GpUCOChKOHiocYtGcg&r=XTpYsh5Ps2zJ
> vtw6ogtti46atk736SI4vgsJiUKIyDE&m=7tOGBG0mrTLgztzu23pWZjCQpfdKbv7cV
> ilnYobvnzJSHk-
> m3fVMonE71FEjfJUc&s=MKxz2dbrxpoqVQEKrR1rIHTDNh3TQzk6j9ILpLJO4eI&e
> = -o- https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__www.flickr.com_photos_dberrange&d=DwIBaQ&c=s883GpUCOChKOHiocYt
> Gcg&r=XTpYsh5Ps2zJvtw6ogtti46atk736SI4vgsJiUKIyDE&m=7tOGBG0mrTLgztzu
> 23pWZjCQpfdKbv7cVilnYobvnzJSHk-m3fVMonE71FEjfJUc&s=yYyWxbabM-
> x_RY69yLXObz2p8wo1OAy4DioA0YScDYc&e= :|
> |: https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__libvirt.org&d=DwIBaQ&c=s883GpUCOChKOHiocYtGcg&r=XTpYsh5Ps2zJvtw
> 6ogtti46atk736SI4vgsJiUKIyDE&m=7tOGBG0mrTLgztzu23pWZjCQpfdKbv7cVilnY
> obvnzJSHk-
> m3fVMonE71FEjfJUc&s=YVwYpdMFSWcMfQ2sM9QgKFheo9Dxq8s4_sFI0KfGqu
> o&e= -o- https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__fstop138.berrange.com&d=DwIBaQ&c=s883GpUCOChKOHiocYtGcg&r=XTp
> Ysh5Ps2zJvtw6ogtti46atk736SI4vgsJiUKIyDE&m=7tOGBG0mrTLgztzu23pWZjCQ
> pfdKbv7cVilnYobvnzJSHk-m3fVMonE71FEjfJUc&s=-
> C8ZIdR8IJmdjdVJljDjhjVC4UiJcAeuiWQ-B_dV4wM&e= :|
> |: https://urldefense.proofpoint.com/v2/url?u=https-3A__entangle-
> 2Dphoto.org&d=DwIBaQ&c=s883GpUCOChKOHiocYtGcg&r=XTpYsh5Ps2zJvtw6o
> gtti46atk736SI4vgsJiUKIyDE&m=7tOGBG0mrTLgztzu23pWZjCQpfdKbv7cVilnYob
> vnzJSHk-
> m3fVMonE71FEjfJUc&s=BgvlBMRgX56LJG0ZSE02GviPHpVTcQ_Nx1N3aEWk9d4
> &e= -o- https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__www.instagram.com_dberrange&d=DwIBaQ&c=s883GpUCOChKOHiocYtGc
> g&r=XTpYsh5Ps2zJvtw6ogtti46atk736SI4vgsJiUKIyDE&m=7tOGBG0mrTLgztzu23
> pWZjCQpfdKbv7cVilnYobvnzJSHk-m3fVMonE71FEjfJUc&s=g23VsTOOhoOdgm-
> cJyiOixKvywYEQXh-L7sRK8YPm90&e= :|
1 year
Entering freeze for libvirt-9.9.0
by Jiri Denemark
I have just tagged v9.9.0-rc1 in the repository and pushed signed
tarballs and source RPMs to https://download.libvirt.org/
Please give the release candidate some testing and in case you find a
serious issue which should have a fix in the upcoming release, feel
free to reply to this thread to make sure the issue is more visible.
If you have not done so yet, please update NEWS.rst to document any
significant change you made since the last release.
Thanks,
Jirka
1 year
[libvirt PATCH 0/4] Update for mailing list move
by Daniel P. Berrangé
A surprising number of places mention the mailing lists
Daniel P. Berrangé (4):
src: update log/error messages pointing to old mailing list addr
docs: update docs pointing to old mailing list addrs
gitpublish: update for new devel mailing list address
docs: update search form to use hyperkitty search
.gitpublish | 2 +-
README.rst | 4 +--
docs/bindings.rst | 2 +-
docs/contact.rst | 18 ++++++-------
docs/downloads.rst | 2 +-
docs/js/main.js | 37 +++++++++++++++++----------
docs/newreposetup.rst | 2 +-
docs/securityprocess.rst | 2 +-
docs/submitting-patches.rst | 10 ++++----
docs/testapi.rst | 4 +--
src/conf/domain_capabilities.c | 2 +-
src/storage_file/storage_file_probe.c | 2 +-
src/util/virarch.c | 4 +--
13 files changed, 51 insertions(+), 40 deletions(-)
--
2.41.0
1 year
[PATCH] support for hotplug/hotunplug in test hypervisor
by Thanos Makatos
Signed-off-by: Thanos Makatos <thanos.makatos(a)nutanix.com>
---
src/test/test_driver.c | 61 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 59 insertions(+), 2 deletions(-)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index e87d7cfd44..6eda0dcc01 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -26,8 +26,6 @@
#include <unistd.h>
#include <sys/stat.h>
#include <libxml/xmlsave.h>
-
-
#include "virerror.h"
#include "datatypes.h"
#include "test_driver.h"
@@ -10035,6 +10033,62 @@ testConnectGetDomainCapabilities(virConnectPtr conn G_GNUC_UNUSED,
return virDomainCapsFormat(domCaps);
}
+static int
+testVirDomainAttachDeviceFlags(virDomainPtr domain,
+ const char *xml,
+ unsigned int flags G_GNUC_UNUSED) {
+
+ int ret = -1;
+ virDomainObj *vm;
+ testDriver *driver;
+ virDomainDeviceDef *devConf;
+
+ if (!(vm = testDomObjFromDomain(domain)))
+ return -1;
+
+ driver = domain->conn->privateData;
+
+ if (!(devConf = virDomainDeviceDefParse(xml, vm->def, driver->xmlopt,
+ NULL, 0)))
+ goto out;
+
+ VIR_APPEND_ELEMENT(vm->def->hostdevs, vm->def->nhostdevs,
+ devConf->data.hostdev);
+ virDomainDeviceDefFree(devConf);
+ ret = 0;
+out:
+ virDomainObjEndAPI(&vm);
+ return ret;
+}
+
+static int
+testVirDomainAttachDevice(virDomainPtr domain, const char *xml)
+{
+ return testVirDomainAttachDeviceFlags(domain, xml, 0);
+}
+
+static int
+testVirDomainDetachDeviceAlias(virDomainPtr domain,
+ const char *alias,
+ unsigned int flags __attribute__((unused)))
+{
+ virDomainObj *vm;
+ int i;
+ bool found = false;
+
+ if (!(vm = testDomObjFromDomain(domain)))
+ return -1;
+
+ for (i = 0; i < vm->def->nhostdevs && !found; i++) {
+ if (!strcmp(vm->def->hostdevs[i]->info->alias, alias)) {
+ virDomainHostdevDefFree(vm->def->hostdevs[i]);
+ VIR_DELETE_ELEMENT(vm->def->hostdevs, i, vm->def->nhostdevs);
+ found = true;
+ }
+ }
+ virDomainObjEndAPI(&vm);
+ return found ? 0 : -1;
+}
/*
* Test driver
@@ -10058,6 +10112,9 @@ static virHypervisorDriver testHypervisorDriver = {
.connectListDomains = testConnectListDomains, /* 0.1.1 */
.connectNumOfDomains = testConnectNumOfDomains, /* 0.1.1 */
.connectListAllDomains = testConnectListAllDomains, /* 0.9.13 */
+ .domainAttachDevice = testVirDomainAttachDevice, /* 9.9.0 */
+ .domainAttachDeviceFlags = testVirDomainAttachDeviceFlags, /* 9.9.0 */
+ .domainDetachDeviceAlias = testVirDomainDetachDeviceAlias, /* 9.9.0 */
.domainCreateXML = testDomainCreateXML, /* 0.1.4 */
.domainCreateXMLWithFiles = testDomainCreateXMLWithFiles, /* 5.7.0 */
.domainLookupByID = testDomainLookupByID, /* 0.1.1 */
--
2.27.0
1 year
Re: [libvirt] [Qemu-devel] Qemu migration with vhost-user-blk on top of local storage
by Stefan Hajnoczi
On Wed, Jan 09, 2019 at 06:23:42PM +0800, wuzhouhui wrote:
> Hi everyone,
>
> I'm working qemu with vhost target (e.g. spdk), and I attempt to migrate VM with
> 2 local storages. One local storage is a regular file, e.g. /tmp/c74.qcow2, and
> the other is a malloc bdev that spdk created. This malloc bdev will exported to
> VM via vhost-user-blk. When I execute following command:
>
> virsh migrate --live --persistent --unsafe --undefinesource --copy-storage-all \
> --p2p --auto-converge --verbose --desturi qemu+tcp://<uri>/system vm0
>
> The libvirt reports:
>
> qemu-2.12.1: error: internal error: unable to execute QEMU command \
> 'nbd-server-add': Cannot find device=drive-virtio-disk1 nor \
> node_name=drive-virtio-disk1
Please post your libvirt domain XML.
> Does it means that qemu with spdk on top of local storage don't support migration?
>
> QEMU: 2.12.1
> SPDK: 18.10
vhost-user-blk bypasses the QEMU block layer, so NBD storage migration
at the QEMU level will not work for the vhost-user-blk disk.
Stefan
1 year
[libvirt] [PATCH v3] openvswitch: Add new port VLAN mode "dot1q-tunnel"
by luzhipeng@uniudc.com
From: ZhiPeng Lu <luzhipeng(a)uniudc.com>
Signed-off-by: ZhiPeng Lu <luzhipeng(a)uniudc.com>
---
v1->v2:
1. Fix "make syntax-check" failure
v2->v3:
1. remove other_config when updating vlan
docs/formatnetwork.html.in | 17 +++++++++--------
docs/schemas/networkcommon.rng | 1 +
src/conf/netdev_vlan_conf.c | 2 +-
src/util/virnetdevopenvswitch.c | 7 +++++++
src/util/virnetdevvlan.h | 1 +
5 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/docs/formatnetwork.html.in b/docs/formatnetwork.html.in
index 363a72b..3c1ae62 100644
--- a/docs/formatnetwork.html.in
+++ b/docs/formatnetwork.html.in
@@ -688,16 +688,17 @@
</p>
<p>
For network connections using Open vSwitch it is also possible
- to configure 'native-tagged' and 'native-untagged' VLAN modes
+ to configure 'native-tagged' and 'native-untagged' and 'dot1q-tunnel'
+ VLAN modes.
<span class="since">Since 1.1.0.</span> This is done with the
- optional <code>nativeMode</code> attribute on
- the <code><tag></code> subelement: <code>nativeMode</code>
- may be set to 'tagged' or 'untagged'. The <code>id</code>
- attribute of the <code><tag></code> subelement
- containing <code>nativeMode</code> sets which VLAN is considered
- to be the "native" VLAN for this interface, and
+ optional <code>nativeMode</code> attribute on the
+ <code><tag></code> subelement: <code>nativeMode</code>
+ may be set to 'tagged' or 'untagged' or 'dot1q-tunnel'.
+ The <code>id</code> attribute of the <code><tag></code>
+ subelement containing <code>nativeMode</code> sets which VLAN is
+ considered to be the "native" VLAN for this interface, and
the <code>nativeMode</code> attribute determines whether or not
- traffic for that VLAN will be tagged.
+ traffic for that VLAN will be tagged or QinQ.
</p>
<p>
<code><vlan></code> elements can also be specified in
diff --git a/docs/schemas/networkcommon.rng b/docs/schemas/networkcommon.rng
index 2699555..11c48ff 100644
--- a/docs/schemas/networkcommon.rng
+++ b/docs/schemas/networkcommon.rng
@@ -223,6 +223,7 @@
<choice>
<value>tagged</value>
<value>untagged</value>
+ <value>dot1q-tunnel</value>
</choice>
</attribute>
</optional>
diff --git a/src/conf/netdev_vlan_conf.c b/src/conf/netdev_vlan_conf.c
index dff49c6..79710d9 100644
--- a/src/conf/netdev_vlan_conf.c
+++ b/src/conf/netdev_vlan_conf.c
@@ -29,7 +29,7 @@
#define VIR_FROM_THIS VIR_FROM_NONE
VIR_ENUM_IMPL(virNativeVlanMode, VIR_NATIVE_VLAN_MODE_LAST,
- "default", "tagged", "untagged")
+ "default", "tagged", "untagged", "dot1q-tunnel")
int
virNetDevVlanParse(xmlNodePtr node, xmlXPathContextPtr ctxt, virNetDevVlanPtr def)
diff --git a/src/util/virnetdevopenvswitch.c b/src/util/virnetdevopenvswitch.c
index 8fe06fd..9fec30b 100644
--- a/src/util/virnetdevopenvswitch.c
+++ b/src/util/virnetdevopenvswitch.c
@@ -91,6 +91,11 @@ virNetDevOpenvswitchConstructVlans(virCommandPtr cmd, virNetDevVlanPtr virtVlan)
virCommandAddArg(cmd, "vlan_mode=native-untagged");
virCommandAddArgFormat(cmd, "tag=%d", virtVlan->nativeTag);
break;
+ case VIR_NATIVE_VLAN_MODE_DOT1Q_TUNNEL:
+ virCommandAddArg(cmd, "vlan_mode=dot1q-tunnel");
+ virCommandAddArg(cmd, "other_config:qinq-ethtype=802.1q");
+ virCommandAddArgFormat(cmd, "tag=%d", virtVlan->nativeTag);
+ break;
case VIR_NATIVE_VLAN_MODE_DEFAULT:
default:
break;
@@ -504,6 +509,8 @@ int virNetDevOpenvswitchUpdateVlan(const char *ifname,
"--", "--if-exists", "clear", "Port", ifname, "tag",
"--", "--if-exists", "clear", "Port", ifname, "trunk",
"--", "--if-exists", "clear", "Port", ifname, "vlan_mode",
+ "--", "--if-exists", "remove", "Port", ifname, "other_config",
+ "qinq-ethtype", NULL,
"--", "--if-exists", "set", "Port", ifname, NULL);
if (virNetDevOpenvswitchConstructVlans(cmd, virtVlan) < 0)
diff --git a/src/util/virnetdevvlan.h b/src/util/virnetdevvlan.h
index be85f59..0667f9d 100644
--- a/src/util/virnetdevvlan.h
+++ b/src/util/virnetdevvlan.h
@@ -29,6 +29,7 @@ typedef enum {
VIR_NATIVE_VLAN_MODE_DEFAULT = 0,
VIR_NATIVE_VLAN_MODE_TAGGED,
VIR_NATIVE_VLAN_MODE_UNTAGGED,
+ VIR_NATIVE_VLAN_MODE_DOT1Q_TUNNEL,
VIR_NATIVE_VLAN_MODE_LAST
} virNativeVlanMode;
--
1.8.3.1
1 year
[libvirt] [PATCH] Fix compile error for stable 1.2.9
by Yang hongyang
Seems a backport miss. An extra member is passed to struct
virLXCBasicMountInfo.
Signed-off-by: Yang hongyang <hongyang.yang(a)easystack.cn>
---
src/lxc/lxc_container.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 28dabec..1c65fa9 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -760,7 +760,7 @@ typedef struct {
static const virLXCBasicMountInfo lxcBasicMounts[] = {
{ "proc", "/proc", "proc", MS_NOSUID|MS_NOEXEC|MS_NODEV, false, false },
- { "/proc/sys", "/proc/sys", NULL, MS_BIND|MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_RDONLY, false, false, false },
+ { "/proc/sys", "/proc/sys", NULL, MS_BIND|MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_RDONLY, false, false },
{ "sysfs", "/sys", "sysfs", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_RDONLY, false, false },
{ "securityfs", "/sys/kernel/security", "securityfs", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_RDONLY, true, true },
#if WITH_SELINUX
--
1.7.1
1 year
[libvirt] Supporting vhost-net and macvtap in libvirt for QEMU
by Anthony Liguori
Disclaimer: I am neither an SR-IOV nor a vhost-net expert, but I've CC'd
people that are who can throw tomatoes at me for getting bits wrong :-)
I wanted to start a discussion about supporting vhost-net in libvirt.
vhost-net has not yet been merged into qemu but I expect it will be soon
so it's a good time to start this discussion.
There are two modes worth supporting for vhost-net in libvirt. The
first mode is where vhost-net backs to a tun/tap device. This is
behaves in very much the same way that -net tap behaves in qemu today.
Basically, the difference is that the virtio backend is in the kernel
instead of in qemu so there should be some performance improvement.
Current, libvirt invokes qemu with -net tap,fd=X where X is an already
open fd to a tun/tap device. I suspect that after we merge vhost-net,
libvirt could support vhost-net in this mode by just doing -net
vhost,fd=X. I think the only real question for libvirt is whether to
provide a user visible switch to use vhost or to just always use vhost
when it's available and it makes sense. Personally, I think the later
makes sense.
The more interesting invocation of vhost-net though is one where the
vhost-net device backs directly to a physical network card. In this
mode, vhost should get considerably better performance than the current
implementation. I don't know the syntax yet, but I think it's
reasonable to assume that it will look something like -net
tap,dev=eth0. The effect will be that eth0 is dedicated to the guest.
On most modern systems, there is a small number of network devices so
this model is not all that useful except when dealing with SR-IOV
adapters. In that case, each physical device can be exposed as many
virtual devices (VFs). There are a few restrictions here though. The
biggest is that currently, you can only change the number of VFs by
reloading a kernel module so it's really a parameter that must be set at
startup time.
I think there are a few ways libvirt could support vhost-net in this
second mode. The simplest would be to introduce a new tag similar to
<source network='br0'>. In fact, if you probed the device type for the
network parameter, you could probably do something like <source
network='eth0'> and have it Just Work.
Another model would be to have libvirt see an SR-IOV adapter as a
network pool whereas it handled all of the VF management. Considering
how inflexible SR-IOV is today, I'm not sure whether this is the best model.
Has anyone put any more thought into this problem or how this should be
modeled in libvirt? Michael, could you share your current thinking for
-net syntax?
--
Regards,
Anthony Liguori
1 year
[PULL 00/39] Migration 20231024 patches
by Juan Quintela
The following changes since commit a95260486aa7e78d7c7194eba65cf03311ad94ad:
Merge tag 'pull-tcg-20231023' of https://gitlab.com/rth7680/qemu into staging (2023-10-23 14:45:46 -0700)
are available in the Git repository at:
https://gitlab.com/juan.quintela/qemu.git tags/migration-20231024-pull-request
for you to fetch changes up to 088f7f03da3f5b3487091302b795c22b1bfe56fb:
migration: Deprecate old compression method (2023-10-24 13:48:24 +0200)
----------------------------------------------------------------
Migration Pull request (20231024)
Hi
In this PULL:
- vmstate registration fixes (thomas, juan)
- start merging vmstate_section_needed changes (marc)
- migration depreactions (juan)
- migration documentation for backwards compatibility (juan)
Please apply.
----------------------------------------------------------------
Juan Quintela (31):
migration/doc: Add contents
migration/doc: Add documentation for backwards compatiblity
migration/doc: How to migrate when hosts have different features
migration/doc: We broke backwards compatibility
migration: Receiving a zero page non zero is an error
migration: Rename ram_handle_compressed() to ram_handle_zero()
migration: Give one error if trying to set MULTIFD and XBZRLE
migration: Give one error if trying to set COMPRESSION and XBZRLE
migration: Remove save_page_use_compression()
migration: Make compress_data_with_multithreads return bool
migration: Simplify compress_page_with_multithread()
migration: Move busy++ to migrate_with_multithread
migration: Create compress_update_rates()
migration: Export send_queued_data()
migration: Move ram_flush_compressed_data() to ram-compress.c
migration: Merge flush_compressed_data() and compress_flush_data()
migration: Rename ram_compressed_pages() to compress_ram_pages()
migration: Create vmstate_register_any()
migration: Use vmstate_register_any()
migration: Use vmstate_register_any() for isa-ide
migration: Use VMSTATE_INSTANCE_ID_ANY for slirp
migration: Hack to maintain backwards compatibility for ppc
migration: Improve example and documentation of vmstate_register()
migration: Use vmstate_register_any() for audio
migration: Use vmstate_register_any() for eeprom93xx
migration: Use vmstate_register_any() for vmware_vga
qemu-iotests: Filter warnings about block migration being deprecated
migration: migrate 'inc' command option is deprecated.
migration: migrate 'blk' command option is deprecated.
migration: Deprecate block migration
migration: Deprecate old compression method
Marc-André Lureau (2):
migration: rename vmstate_save_needed->vmstate_section_needed
migration: set file error on subsection loading
Peter Xu (1):
migration: Check in savevm_state_handler_insert for dups
Thomas Huth (5):
hw/ipmi: Don't call vmstate_register() from instance_init() functions
hw/s390x/s390-skeys: Don't call register_savevm_live() during
instance_init()
hw/s390x/s390-stattrib: Simplify handling of the "migration-enabled"
property
hw/s390x/s390-stattrib: Don't call register_savevm_live() during
instance_init()
migration/ram: Fix compilation with -Wshadow=local
docs/about/deprecated.rst | 35 ++
docs/devel/migration.rst | 532 ++++++++++++++++++++++++++++++-
qapi/migration.json | 93 ++++--
include/migration/vmstate.h | 30 +-
migration/ram-compress.h | 10 +-
migration/ram.h | 3 +-
audio/audio.c | 2 +-
backends/dbus-vmstate.c | 3 +-
backends/tpm/tpm_emulator.c | 3 +-
hw/display/vmware_vga.c | 2 +-
hw/i2c/core.c | 2 +-
hw/ide/isa.c | 2 +-
hw/input/adb.c | 2 +-
hw/input/ads7846.c | 2 +-
hw/input/stellaris_input.c | 3 +-
hw/intc/xics.c | 18 +-
hw/ipmi/ipmi_bmc_extern.c | 29 +-
hw/ipmi/isa_ipmi_bt.c | 34 +-
hw/ipmi/isa_ipmi_kcs.c | 50 +--
hw/net/eepro100.c | 3 +-
hw/nvram/eeprom93xx.c | 2 +-
hw/pci/pci.c | 2 +-
hw/ppc/spapr.c | 25 +-
hw/ppc/spapr_nvdimm.c | 3 +-
hw/s390x/s390-skeys.c | 35 +-
hw/s390x/s390-stattrib.c | 71 ++---
hw/timer/arm_timer.c | 2 +-
hw/virtio/virtio-mem.c | 4 +-
migration/block.c | 3 +
migration/migration-hmp-cmds.c | 10 +
migration/migration.c | 10 +
migration/options.c | 36 ++-
migration/ram-compress.c | 112 +++++--
migration/ram.c | 114 ++-----
migration/rdma.c | 8 +-
migration/savevm.c | 34 +-
migration/vmstate.c | 5 +-
net/slirp.c | 5 +-
tests/qemu-iotests/183 | 2 +-
tests/qemu-iotests/common.filter | 7 +
40 files changed, 1041 insertions(+), 307 deletions(-)
--
2.41.0
1 year