[PATCH V3 0/3] migration: add qemu parallel migration options
by Jiang Jiacheng
Add compress method zlib and zstd for parallel migration and new
migration options to set qemu's parameter related with parallel
migration(multifd-compression, multifd-zlib-level and multifd-zstd-level).
These parameters has been supported by QEMU since 5.0.
v3 of:
https://listman.redhat.com/archives/libvir-list/2023-February/237604.html
diff to v2:
* merge the processing of new method into 'qemuMigrationParamsSetCompression'
* improve descriptions for the new options.
Jiang Jiacheng (3):
Add public API for parallel compression method
virsh: Add migrate options to set parallel compress level
qemu: support set parallel migration compression method
docs/manpages/virsh.rst | 29 ++++++++----
include/libvirt/libvirt-domain.h | 30 ++++++++++--
src/qemu/qemu_migration.h | 2 +
src/qemu/qemu_migration_params.c | 80 +++++++++++++++++++++++++++++++-
src/qemu/qemu_migration_params.h | 3 ++
tools/virsh-domain.c | 26 +++++++++++
6 files changed, 156 insertions(+), 14 deletions(-)
--
2.33.0
1 year, 7 months
[RFC PATCH] docs/about/deprecated: Deprecate 32-bit host systems
by Thomas Huth
Testing 32-bit host OS support takes a lot of precious time during the QEMU
contiguous integration tests, and considering that many OS vendors stopped
shipping 32-bit variants of their OS distributions and most hardware from
the past >10 years is capable of 64-bit, keeping the 32-bit support alive
is an inadequate burden for the QEMU project. Let's mark the 32-bit
support as deprecated so we can drop it after a while - this will help
us to cut down our limited CI minutes in the gitlab CI, for example.
Signed-off-by: Thomas Huth <thuth(a)redhat.com>
---
docs/about/deprecated.rst | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 9f1bbc495d..ce6463e72b 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -181,9 +181,20 @@ As Debian 10 ("Buster") moved into LTS the big endian 32 bit version of
MIPS moved out of support making it hard to maintain our
cross-compilation CI tests of the architecture. As we no longer have
CI coverage support may bitrot away before the deprecation process
-completes. The little endian variants of MIPS (both 32 and 64 bit) are
+completes. The little endian variants of MIPS are
still a supported host architecture.
+32-bit host operating systems (since 8.0)
+'''''''''''''''''''''''''''''''''''''''''
+
+Testing 32-bit host OS support takes a lot of precious time during the QEMU
+contiguous integration tests, and considering that many OS vendors stopped
+shipping 32-bit variants of their OS distributions and most hardware from
+the past >10 years is capable of 64-bit, keeping the 32-bit support alive
+is an inadequate burden for the QEMU project. Thus QEMU will soon drop the
+support for 32-bit host systems.
+
+
QEMU API (QAPI) events
----------------------
--
2.31.1
1 year, 8 months
[PATCH 0/2] libxl: Support custom EFI firmware path
by Jim Fehlig
libxl added support for specifying custom firmware paths long ago. This series
adds support to the libxl driver and the XML to xl.cfg config converter.
Jim Fehlig (2):
libxl: Support specifying a custom firmware path
libxl: Add support for custom firmware path in config converter
src/libxl/libxl_conf.c | 14 ++--
src/libxl/xen_xl.c | 19 +++--
tests/libxlxml2domconfigdata/efi-hvm.json | 91 +++++++++++++++++++++++
tests/libxlxml2domconfigdata/efi-hvm.xml | 36 +++++++++
tests/libxlxml2domconfigtest.c | 1 +
tests/xlconfigdata/test-fullvirt-ovmf.cfg | 1 +
tests/xlconfigdata/test-fullvirt-ovmf.xml | 2 +-
7 files changed, 150 insertions(+), 14 deletions(-)
create mode 100644 tests/libxlxml2domconfigdata/efi-hvm.json
create mode 100644 tests/libxlxml2domconfigdata/efi-hvm.xml
--
2.39.1
1 year, 8 months
[PATCH] virnettlscontext: allow client/server cert chains
by matoro_mailinglist_libvirt@matoro.tk
From: matoro <11910244-matoro3(a)users.noreply.gitlab.com>
The existing implementation assumes that client/server certificates are
single individual certificates. If using publicly-issued certificates,
or internal CAs that use an intermediate issuer, this is unlikely to be
the case, and they will instead be certificate chains. While this can
be worked around by moving the intermediate certificates to the CA
certificate, which DOES currently support multiple certificates, this
instead allows the issued certificate chains to be used as-is, without
requiring the overhead of shuffling certificates around.
See: https://gitlab.com/libvirt/libvirt/-/merge_requests/222
Signed-off-by: matoro <matoro_github(a)matoro.tk>
---
src/rpc/virnettlscontext.c | 97 +++++++++++++-----------------------
tests/virnettlscontexttest.c | 72 +++++++++++++++++++++++++-
2 files changed, 104 insertions(+), 65 deletions(-)
diff --git a/src/rpc/virnettlscontext.c b/src/rpc/virnettlscontext.c
index cfd26f0701..78b4b0f187 100644
--- a/src/rpc/virnettlscontext.c
+++ b/src/rpc/virnettlscontext.c
@@ -424,7 +424,8 @@ static int virNetTLSContextCheckCert(gnutls_x509_crt_t cert,
}
-static int virNetTLSContextCheckCertPair(gnutls_x509_crt_t cert,
+static int virNetTLSContextCheckCertPair(gnutls_x509_crt_t *certs,
+ size_t ncerts,
const char *certFile,
gnutls_x509_crt_t *cacerts,
size_t ncacerts,
@@ -433,7 +434,7 @@ static int virNetTLSContextCheckCertPair(gnutls_x509_crt_t cert,
{
unsigned int status;
- if (gnutls_x509_crt_list_verify(&cert, 1,
+ if (gnutls_x509_crt_list_verify(certs, ncerts,
cacerts, ncacerts,
NULL, 0,
0, &status) < 0) {
@@ -469,57 +470,18 @@ static int virNetTLSContextCheckCertPair(gnutls_x509_crt_t cert,
}
-static gnutls_x509_crt_t virNetTLSContextLoadCertFromFile(const char *certFile,
- bool isServer)
-{
- gnutls_datum_t data;
- gnutls_x509_crt_t cert = NULL;
- g_autofree char *buf = NULL;
- int ret = -1;
-
- VIR_DEBUG("isServer %d certFile %s",
- isServer, certFile);
-
- if (gnutls_x509_crt_init(&cert) < 0) {
- virReportError(VIR_ERR_SYSTEM_ERROR, "%s",
- _("Unable to initialize certificate"));
- goto cleanup;
- }
-
- if (virFileReadAll(certFile, (1<<16), &buf) < 0)
- goto cleanup;
-
- data.data = (unsigned char *)buf;
- data.size = strlen(buf);
-
- if (gnutls_x509_crt_import(cert, &data, GNUTLS_X509_FMT_PEM) < 0) {
- virReportError(VIR_ERR_SYSTEM_ERROR, isServer ?
- _("Unable to import server certificate %s") :
- _("Unable to import client certificate %s"),
- certFile);
- goto cleanup;
- }
-
- ret = 0;
-
- cleanup:
- if (ret != 0) {
- g_clear_pointer(&cert, gnutls_x509_crt_deinit);
- }
- return cert;
-}
-
-
-static int virNetTLSContextLoadCACertListFromFile(const char *certFile,
- gnutls_x509_crt_t *certs,
- unsigned int certMax,
- size_t *ncerts)
+static int virNetTLSContextLoadCertListFromFile(const char *certFile,
+ gnutls_x509_crt_t *certs,
+ unsigned int certMax,
+ size_t *ncerts,
+ bool isServer,
+ bool isCA)
{
gnutls_datum_t data;
g_autofree char *buf = NULL;
*ncerts = 0;
- VIR_DEBUG("certFile %s", certFile);
+ VIR_DEBUG("isCA %d isServer %d certFile %s", isCA, isServer, certFile);
if (virFileReadAll(certFile, (1<<16), &buf) < 0)
return -1;
@@ -527,9 +489,13 @@ static int virNetTLSContextLoadCACertListFromFile(const char *certFile,
data.data = (unsigned char *)buf;
data.size = strlen(buf);
- if (gnutls_x509_crt_list_import(certs, &certMax, &data, GNUTLS_X509_FMT_PEM, 0) < 0) {
+ if (gnutls_x509_crt_list_import(certs, &certMax, &data, GNUTLS_X509_FMT_PEM,
+ isCA ? GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED :
+ GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED | GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED) < 0) {
virReportError(VIR_ERR_SYSTEM_ERROR,
- _("Unable to import CA certificate list %s"),
+ isCA ? _("Unable to import CA certificate list %s") :
+ (isServer ? _("Unable to import server certificate %s") :
+ _("Unable to import client certificate %s")),
certFile);
return -1;
}
@@ -539,44 +505,49 @@ static int virNetTLSContextLoadCACertListFromFile(const char *certFile,
}
-#define MAX_CERTS 16
+// Limited by frame size of 4096 bytes.
+// Typical system CA bundle contains 140-ish CAs.
+#define MAX_CERTS 200
static int virNetTLSContextSanityCheckCredentials(bool isServer,
const char *cacertFile,
const char *certFile)
{
- gnutls_x509_crt_t cert = NULL;
+ gnutls_x509_crt_t certs[MAX_CERTS];
gnutls_x509_crt_t cacerts[MAX_CERTS];
- size_t ncacerts = 0;
+ size_t ncerts = 0, ncacerts = 0;
size_t i;
int ret = -1;
+ memset(certs, 0, sizeof(certs));
memset(cacerts, 0, sizeof(cacerts));
if ((access(certFile, R_OK) == 0) &&
- !(cert = virNetTLSContextLoadCertFromFile(certFile, isServer)))
+ virNetTLSContextLoadCertListFromFile(certFile, certs,
+ MAX_CERTS, &ncerts, isServer, false) < 0)
goto cleanup;
if ((access(cacertFile, R_OK) == 0) &&
- virNetTLSContextLoadCACertListFromFile(cacertFile, cacerts,
- MAX_CERTS, &ncacerts) < 0)
+ virNetTLSContextLoadCertListFromFile(cacertFile, cacerts,
+ MAX_CERTS, &ncacerts, isServer, true) < 0)
goto cleanup;
- if (cert &&
- virNetTLSContextCheckCert(cert, certFile, isServer, false) < 0)
- goto cleanup;
+ for (i = 0; i < ncerts; i++) {
+ if (virNetTLSContextCheckCert(certs[i], certFile, isServer, (i != 0)) < 0)
+ goto cleanup;
+ }
for (i = 0; i < ncacerts; i++) {
if (virNetTLSContextCheckCert(cacerts[i], cacertFile, isServer, true) < 0)
goto cleanup;
}
- if (cert && ncacerts &&
- virNetTLSContextCheckCertPair(cert, certFile, cacerts, ncacerts, cacertFile, isServer) < 0)
+ if (ncerts && ncacerts &&
+ virNetTLSContextCheckCertPair(certs, ncerts, certFile, cacerts, ncacerts, cacertFile, isServer) < 0)
goto cleanup;
ret = 0;
cleanup:
- if (cert)
- gnutls_x509_crt_deinit(cert);
+ for (i = 0; i < ncerts; i++)
+ gnutls_x509_crt_deinit(certs[i]);
for (i = 0; i < ncacerts; i++)
gnutls_x509_crt_deinit(cacerts[i]);
return ret;
diff --git a/tests/virnettlscontexttest.c b/tests/virnettlscontexttest.c
index 2311524db8..918ff04134 100644
--- a/tests/virnettlscontexttest.c
+++ b/tests/virnettlscontexttest.c
@@ -517,6 +517,12 @@ mymain(void)
true, true, GNUTLS_KEY_KEY_CERT_SIGN,
false, false, NULL, NULL,
0, 0);
+ TLS_ROOT_REQ(someotherrootreq,
+ "UK", "some other random CA", NULL, NULL, NULL, NULL,
+ true, true, true,
+ true, true, GNUTLS_KEY_KEY_CERT_SIGN,
+ false, false, NULL, NULL,
+ 0, 0);
TLS_CERT_REQ(cacertlevel1areq, cacertrootreq,
"UK", "libvirt level 1a", NULL, NULL, NULL, NULL,
true, true, true,
@@ -555,15 +561,72 @@ mymain(void)
cacertlevel2areq.crt,
};
+ gnutls_x509_crt_t cabundle[] = {
+ someotherrootreq.crt,
+ cacertrootreq.crt,
+ };
+
+ gnutls_x509_crt_t servercertchain[] = {
+ servercertlevel3areq.crt,
+ cacertlevel2areq.crt,
+ cacertlevel1areq.crt,
+ };
+
+ gnutls_x509_crt_t servercertchain_incomplete[] = {
+ servercertlevel3areq.crt,
+ cacertlevel2areq.crt,
+ };
+
+ gnutls_x509_crt_t servercertchain_unsorted[] = {
+ servercertlevel3areq.crt,
+ cacertlevel1areq.crt,
+ cacertlevel2areq.crt,
+ };
+
+ gnutls_x509_crt_t clientcertchain[] = {
+ clientcertlevel2breq.crt,
+ cacertlevel1breq.crt,
+ };
+
testTLSWriteCertChain("cacertchain-ctx.pem",
certchain,
G_N_ELEMENTS(certchain));
- VIR_WARNINGS_RESET
-
DO_CTX_TEST(true, "cacertchain-ctx.pem", servercertlevel3areq.filename, false);
DO_CTX_TEST(false, "cacertchain-ctx.pem", clientcertlevel2breq.filename, false);
+ testTLSWriteCertChain("servercertchain-ctx.pem",
+ servercertchain,
+ G_N_ELEMENTS(servercertchain));
+
+ DO_CTX_TEST(true, cacertrootreq.filename, "servercertchain-ctx.pem", false);
+
+ testTLSWriteCertChain("cabundle-ctx.pem",
+ cabundle,
+ G_N_ELEMENTS(cabundle));
+
+ DO_CTX_TEST(true, "cabundle-ctx.pem", "servercertchain-ctx.pem", false);
+
+ testTLSWriteCertChain("servercertchain_incomplete-ctx.pem",
+ servercertchain_incomplete,
+ G_N_ELEMENTS(servercertchain_incomplete));
+
+ DO_CTX_TEST(true, cacertrootreq.filename, "servercertchain_incomplete-ctx.pem", true);
+
+ testTLSWriteCertChain("servercertchain_unsorted-ctx.pem",
+ servercertchain_unsorted,
+ G_N_ELEMENTS(servercertchain_unsorted));
+
+ DO_CTX_TEST(true, cacertrootreq.filename, "servercertchain_unsorted-ctx.pem", true);
+
+ testTLSWriteCertChain("clientcertchain-ctx.pem",
+ clientcertchain,
+ G_N_ELEMENTS(clientcertchain));
+
+ VIR_WARNINGS_RESET
+
+ DO_CTX_TEST(false, cacertrootreq.filename, "clientcertchain-ctx.pem", false);
+
DO_CTX_TEST(false, "cacertdoesnotexist.pem", "servercertdoesnotexist.pem", true);
testTLSDiscardCert(&cacertreq);
@@ -620,7 +683,12 @@ mymain(void)
testTLSDiscardCert(&cacertlevel2areq);
testTLSDiscardCert(&servercertlevel3areq);
testTLSDiscardCert(&clientcertlevel2breq);
+ testTLSDiscardCert(&someotherrootreq);
unlink("cacertchain-ctx.pem");
+ unlink("servercertchain-ctx.pem");
+ unlink("servercertchain_incomplete-ctx.pem");
+ unlink("servercertchain_unsorted-ctx.pem");
+ unlink("clientcertchain.pem");
testTLSCleanup(KEYFILE);
--
2.39.1
1 year, 9 months
[PATCH v2 0/6] Introduce active RBD disk snapshot support
by Or Ozeri
Internal disk snapshots are currently only supported on non-active VMs.
For RBD disks only, this patch series extends this support for active VMs running with qemu.
We also add the option to set a name for each RBD snapshot, and allow taking them alongside other external disk snapshots (mixing).
Deletion and reverting to snapshots containing RBD snapshots is not allowed, and is validated.
Note that taking RBD snapshots on a non-active VM is still unsupported.
Changes in v2:
- reduce patch to RBD use-case only (e.g. not including qcow2 internal snapshots)
- add validation to disallow RBD snapshots deletion / reverting
Or Ozeri (6):
conf: Add snapshotName attribute for internal disk snapshot
qemu: Block deletion and reverting on non-full internal snapshots
qemu: Add internal support for active disk internal snapshots
qemu: Allow active disk snapshots for RBD disks
qemu: Allow setting per-disk snapshot name for RBD disks
qemu: Allow mixing active internal and external active disk snapshots
docs/formatsnapshot.rst | 5 +
src/conf/schemas/domainsnapshot.rng | 4 +
src/conf/snapshot_conf.c | 56 ++++++++++
src/conf/snapshot_conf.h | 5 +
src/libvirt_private.syms | 1 +
src/qemu/qemu_monitor.c | 9 ++
src/qemu/qemu_monitor.h | 5 +
src/qemu/qemu_monitor_json.c | 14 +++
src/qemu/qemu_monitor_json.h | 5 +
src/qemu/qemu_snapshot.c | 105 ++++++++++++------
.../disk_snapshot.xml | 2 +-
.../disk_snapshot.xml | 2 +-
.../disk_snapshot_redefine.xml | 2 +-
tests/qemumonitorjsontest.c | 1 +
14 files changed, 181 insertions(+), 35 deletions(-)
--
2.25.1
1 year, 9 months
[libvirt PATCH v3] qemu: implement QEMU NBD source reconnect delay attribute
by Christian Nautze
Currently it's only possible to set this parameter during domain
creation via QEMU commandline passthrough feature.
With the new delay attribute it's also possible to set this
parameter if you want to attach a new NBD disk
using "virsh attach-device domain device.xml" e.g.:
<disk type='network' device='disk'>
<driver name='qemu' type='raw'/>
<source protocol='nbd' name='foo'>
<host name='example.org' port='6000'/>
<reconnect delay='10'/>
</source>
<target dev='vdb' bus='virtio'/>
</disk>
Signed-off-by: Christian Nautze <christian.nautze(a)exoscale.ch>
---
Changes: schema reconnect element: drop mandatory 'enabled' attribute when using 'delay'
reconnect element: use choice for attributes
---
docs/formatdomain.rst | 11 +++++++--
src/conf/domain_conf.c | 12 ++++++++++
src/conf/schemas/domaincommon.rng | 3 +++
src/conf/schemas/storagecommon.rng | 19 ++++++++++-----
src/conf/storage_source_conf.c | 1 +
src/conf/storage_source_conf.h | 4 ++++
src/qemu/qemu_block.c | 4 +++-
src/qemu/qemu_domain.c | 9 ++++++++
.../disk-network-nbd.x86_64-latest.args | 23 +++++++++++--------
tests/qemuxml2argvdata/disk-network-nbd.xml | 8 +++++++
tests/qemuxml2xmloutdata/disk-network-nbd.xml | 9 ++++++++
11 files changed, 84 insertions(+), 19 deletions(-)
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index 638768c18d..e4ea330a0d 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -2946,13 +2946,20 @@ paravirtualized driver is specified via the ``disk`` element.
are intended to be default, then the entire element may be omitted.
``reconnect``
For disk type ``vhostuser`` configures reconnect timeout if the connection
- is lost. It has two mandatory attributes:
+ is lost. This is set with the two mandatory attributes ``enabled`` and
+ ``timeout``.
+ For disk type ``network`` and protocol ``nbd`` the QEMU NBD reconnect delay
+ can be set via attribute ``delay``:
``enabled``
If the reconnect feature is enabled, accepts ``yes`` and ``no``
``timeout``
The amount of seconds after which hypervisor tries to reconnect.
-
+ ``delay``
+ Only for NBD hosts. The amount of seconds during which all requests are
+ paused and will be rerun after a successful reconnect. After that time, any
+ delayed requests and all future requests before a successful reconnect
+ will immediately fail. If not set the default QEMU value is 0.
For a "file" or "volume" disk type which represents a cdrom or floppy (the
``device`` attribute), it is possible to define policy what to do with the
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 84ffd93b7f..1e5c88e45d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -7146,6 +7146,15 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
src->tlsFromConfig = !!value;
}
+ if (src->protocol == VIR_STORAGE_NET_PROTOCOL_NBD) {
+ xmlNodePtr cur;
+ if ((cur = virXPathNode("./reconnect", ctxt))) {
+ if (virXMLPropUInt(cur, "delay", 10, VIR_XML_PROP_NONE,
+ &src->reconnectDelay) < 0)
+ return -1;
+ }
+ }
+
/* for historical reasons we store the volume and image name in one XML
* element although it complicates thing when attempting to access them. */
if (src->path &&
@@ -22087,6 +22096,9 @@ virDomainDiskSourceFormatNetwork(virBuffer *attrBuf,
virBufferAddLit(childBuf, "/>\n");
}
+ if (src->reconnectDelay) {
+ virBufferAsprintf(childBuf, "<reconnect delay='%u'/>\n", src->reconnectDelay);
+ }
virBufferEscapeString(childBuf, "<snapshot name='%s'/>\n", src->snapshot);
virBufferEscapeString(childBuf, "<config file='%s'/>\n", src->configFile);
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
index ab4886b783..03aab6f7e5 100644
--- a/src/conf/schemas/domaincommon.rng
+++ b/src/conf/schemas/domaincommon.rng
@@ -2199,6 +2199,9 @@
</optional>
<ref name="diskSourceCommon"/>
<ref name="diskSourceNetworkHost"/>
+ <optional>
+ <ref name="reconnect"/>
+ </optional>
<optional>
<ref name="encryption"/>
</optional>
diff --git a/src/conf/schemas/storagecommon.rng b/src/conf/schemas/storagecommon.rng
index 4d6e646c9a..23eff9ecb1 100644
--- a/src/conf/schemas/storagecommon.rng
+++ b/src/conf/schemas/storagecommon.rng
@@ -55,14 +55,21 @@
<define name="reconnect">
<element name="reconnect">
- <attribute name="enabled">
- <ref name="virYesNo"/>
- </attribute>
- <optional>
- <attribute name="timeout">
+ <choice>
+ <group>
+ <attribute name="enabled">
+ <ref name="virYesNo"/>
+ </attribute>
+ <optional>
+ <attribute name="timeout">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ </group>
+ <attribute name="delay">
<ref name="unsignedInt"/>
</attribute>
- </optional>
+ </choice>
</element>
</define>
diff --git a/src/conf/storage_source_conf.c b/src/conf/storage_source_conf.c
index cecd7e811e..58009fd06e 100644
--- a/src/conf/storage_source_conf.c
+++ b/src/conf/storage_source_conf.c
@@ -811,6 +811,7 @@ virStorageSourceCopy(const virStorageSource *src,
def->sslverify = src->sslverify;
def->readahead = src->readahead;
def->timeout = src->timeout;
+ def->reconnectDelay = src->reconnectDelay;
def->metadataCacheMaxSize = src->metadataCacheMaxSize;
/* storage driver metadata are not copied */
diff --git a/src/conf/storage_source_conf.h b/src/conf/storage_source_conf.h
index 14a6825d54..c6187dda59 100644
--- a/src/conf/storage_source_conf.h
+++ b/src/conf/storage_source_conf.h
@@ -312,6 +312,10 @@ struct _virStorageSource {
unsigned long long readahead; /* size of the readahead buffer in bytes */
unsigned long long timeout; /* connection timeout in seconds */
+ /* NBD QEMU reconnect-delay option,
+ * 0 as default value */
+ unsigned int reconnectDelay;
+
virStorageSourceNVMeDef *nvme; /* type == VIR_STORAGE_TYPE_NVME */
virDomainChrSourceDef *vhostuser; /* type == VIR_STORAGE_TYPE_VHOST_USER */
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 5e700eff99..8fcebd8992 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -529,6 +529,7 @@ qemuBlockStorageSourceGetNBDProps(virStorageSource *src,
"S:export", src->path,
"S:tls-creds", tlsAlias,
"S:tls-hostname", tlsHostname,
+ "p:reconnect-delay", src->reconnectDelay,
NULL) < 0)
return NULL;
@@ -1848,7 +1849,8 @@ qemuBlockGetBackingStoreString(virStorageSource *src,
src->ncookies == 0 &&
src->sslverify == VIR_TRISTATE_BOOL_ABSENT &&
src->timeout == 0 &&
- src->readahead == 0) {
+ src->readahead == 0 &&
+ src->reconnectDelay == 0) {
switch ((virStorageNetProtocol) src->protocol) {
case VIR_STORAGE_NET_PROTOCOL_NBD:
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 4cf9a259ea..1206d59f4a 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -5020,6 +5020,15 @@ qemuDomainValidateStorageSource(virStorageSource *src,
}
}
+ if (src->reconnectDelay > 0) {
+ if (actualType != VIR_STORAGE_TYPE_NETWORK ||
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_NBD) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("reconnect delay is supported only with NBD protocol"));
+ return -1;
+ }
+ }
+
if (src->query &&
(actualType != VIR_STORAGE_TYPE_NETWORK ||
(src->protocol != VIR_STORAGE_NET_PROTOCOL_HTTPS &&
diff --git a/tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args b/tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args
index 21e619af3e..e8d13b0bd4 100644
--- a/tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args
@@ -28,21 +28,24 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
-no-acpi \
-boot strict=on \
-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
--blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"node-name":"libvirt-5-storage","auto-read-only":true,"discard":"unmap"}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"node-name":"libvirt-6-storage","auto-read-only":true,"discard":"unmap"}' \
+-blockdev '{"node-name":"libvirt-6-format","read-only":false,"driver":"raw","file":"libvirt-6-storage"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x2","drive":"libvirt-6-format","id":"virtio-disk0","bootindex":1}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"export":"bar","node-name":"libvirt-5-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-5-format","read-only":false,"driver":"raw","file":"libvirt-5-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x2","drive":"libvirt-5-format","id":"virtio-disk0","bootindex":1}' \
--blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"export":"bar","node-name":"libvirt-4-storage","auto-read-only":true,"discard":"unmap"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x3","drive":"libvirt-5-format","id":"virtio-disk1"}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"::1","port":"6000"},"node-name":"libvirt-4-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-4-format","read-only":false,"driver":"raw","file":"libvirt-4-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x3","drive":"libvirt-4-format","id":"virtio-disk1"}' \
--blockdev '{"driver":"nbd","server":{"type":"inet","host":"::1","port":"6000"},"node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x4","drive":"libvirt-4-format","id":"virtio-disk2"}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"::1","port":"6000"},"export":"bar","node-name":"libvirt-3-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-3-format","read-only":false,"driver":"raw","file":"libvirt-3-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x4","drive":"libvirt-3-format","id":"virtio-disk2"}' \
--blockdev '{"driver":"nbd","server":{"type":"inet","host":"::1","port":"6000"},"export":"bar","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x5","drive":"libvirt-3-format","id":"virtio-disk3"}' \
+-blockdev '{"driver":"nbd","server":{"type":"unix","path":"/var/run/nbdsock"},"export":"bar","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x5","drive":"libvirt-2-format","id":"virtio-disk3"}' \
--blockdev '{"driver":"nbd","server":{"type":"unix","path":"/var/run/nbdsock"},"export":"bar","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x6","drive":"libvirt-2-format","id":"virtio-disk4"}' \
+-blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"export":"foo","reconnect-delay":10,"node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
--device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x6","drive":"libvirt-1-format","id":"virtio-disk4"}' \
+-device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x7","drive":"libvirt-1-format","id":"virtio-disk5"}' \
-audiodev '{"id":"audio1","driver":"none"}' \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/disk-network-nbd.xml b/tests/qemuxml2argvdata/disk-network-nbd.xml
index 8ac6cc3b7b..4e8b1e5b03 100644
--- a/tests/qemuxml2argvdata/disk-network-nbd.xml
+++ b/tests/qemuxml2argvdata/disk-network-nbd.xml
@@ -49,6 +49,14 @@
</source>
<target dev='vde' bus='virtio'/>
</disk>
+ <disk type='network' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source protocol='nbd' name='foo'>
+ <host name='example.org' port='6000'/>
+ <reconnect delay='10'/>
+ </source>
+ <target dev='vdf' bus='virtio'/>
+ </disk>
<controller type='usb' index='0'/>
<controller type='ide' index='0'/>
<controller type='pci' index='0' model='pci-root'/>
diff --git a/tests/qemuxml2xmloutdata/disk-network-nbd.xml b/tests/qemuxml2xmloutdata/disk-network-nbd.xml
index f8dcca4bab..38d1f290c8 100644
--- a/tests/qemuxml2xmloutdata/disk-network-nbd.xml
+++ b/tests/qemuxml2xmloutdata/disk-network-nbd.xml
@@ -54,6 +54,15 @@
<target dev='vde' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
+ <disk type='network' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source protocol='nbd' name='foo'>
+ <host name='example.org' port='6000'/>
+ <reconnect delay='10'/>
+ </source>
+ <target dev='vdf' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
+ </disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
--
2.34.1
1 year, 9 months
[PATCH v2 0/3] qemu_passt: Fixes for passt lifecycle handling
by Stefano Brivio
This series implements fixes in the handling of passt's lifecycle.
v2: In 1/3, preserve the VM-specific MCS range by explicitly setting a
label, as suggested by Daniel, with a temporary workaround sketched
by Michal.
Stefano Brivio (3):
qemu_passt: Don't make passt transition to svirt_t/libvirt_domain on
start
qemu_passt: Set UID and GID to configured values for qemu driver, if
any
qemu_passt: Remove passt socket file on exit
src/qemu/qemu_passt.c | 46 +++++++++++++++++++++++++++++++++++--------
1 file changed, 38 insertions(+), 8 deletions(-)
--
2.39.1
1 year, 9 months
[libvirt PATCH 00/33] qemu: Move firmware selection to postparse and add support for QCOW2 firmware
by Andrea Bolognani
Motivation for these changes can be found in the commit message
for patch 20 ("qemu: Move firmware selection from startup to
postparse") as well as [RHBZ#2161965].
Patches 01-17 are preparatory fixes/improvements/cleanups.
Patches 19-20 move firmware selection from startup to postparse,
and patches 21-22 clean up a bit after that change. Patch 20 in
particular is significantly larger than I would have liked, but
I haven't been able to come up with a way to split it while
still preserving bisectability and making things clearer instead
of complicating them. If anyone has ideas in this regard, please
let me know!
Patches 23-27 add support for choosing a firmware format, but
are effectively no-op because formats other than raw are still
rejected at this point.
Patches 28-30 add support for QCOW2 format firmware in the QEMU
driver.
Patches 31-33 document the changes.
[RHBZ#2161965] https://bugzilla.redhat.com/show_bug.cgi?id=2161965
Andrea Bolognani (33):
docs: Fix documentation for loader.stateless attribute
tests: Set nvramDir in qemuxml2xmltest
tests: Rename firmware-manual-efi-rw* tests
tests: Use x86_64 for all x86 firmware tests
tests: Move firmware tests to CAPS_LATEST
tests: Unify input files for firmware tests
tests: Enable qemuxml2xml for more firmware tests
tests: Add more firmware tests
qemu: Introduce qemuDomainDefMachinePostParse()
qemu: Introduce qemuDomainDefBootPostParse()
conf: Introduce virDomainLoaderDefParseXMLLoader()
conf: introduce virDomainLoaderDefNew()
qemu: Add convenience local variables
qemu: Only fill nvramTemplate for local sources
qemu: Clear os.firmwareFeatures after autoselection
qemu: Don't pick firmware that requires SMM when smm=off
qemu: Don't pick firmware with unsupported format
tests: Add descriptors for QCOW2 format firmware builds
conf: Export virDomainDefOSValidate()
qemu: Move firmware selection from startup to postparse
qemu: Move qemuDomainNVRAMPathFormat() to qemu_firmware
qemu: Introduce qemuFirmwareEnsureNVRAM()
conf: Change handling for empty NVRAM path
conf: Parse firmware format
drivers: Reject unsupported firmware formats
qemu: Filter firmwares based on format
qemu: Propagate firmware format
conf: Accept QCOW2 firmware format
qemu: Add support for QCOW2 format firmware
tests: Add more firmware tests
docs: Document firmware format attribute
news: Document changes to firmware autoselection
news: Document support for QCOW2 format firmware
NEWS.rst | 16 +
docs/formatdomain.rst | 11 +-
src/bhyve/bhyve_firmware.c | 9 +-
src/conf/domain_conf.c | 123 ++++-
src/conf/domain_conf.h | 2 +
src/conf/domain_validate.c | 4 +-
src/conf/domain_validate.h | 3 +
src/conf/schemas/domaincommon.rng | 15 +
src/libvirt_private.syms | 2 +
src/libxl/libxl_conf.c | 9 +-
src/libxl/xen_xl.c | 4 +-
src/libxl/xen_xm.c | 2 +-
src/qemu/qemu_domain.c | 113 +++--
src/qemu/qemu_domain.h | 5 -
src/qemu/qemu_driver.c | 2 -
src/qemu/qemu_firmware.c | 460 +++++++++++++-----
src/qemu/qemu_firmware.h | 3 +-
src/qemu/qemu_process.c | 33 +-
.../share/qemu/firmware/65-ovmf-qcow2.json | 35 ++
.../share/qemu/firmware/66-aavmf-qcow2.json | 36 ++
tests/qemufirmwaretest.c | 11 +-
.../firmware-auto-bios-not-stateless.xml | 4 +-
.../firmware-auto-bios-nvram.xml | 6 +-
...are-auto-bios-stateless.x86_64-latest.args | 16 +-
.../firmware-auto-bios-stateless.xml | 4 +-
.../firmware-auto-bios.x86_64-latest.args | 16 +-
tests/qemuxml2argvdata/firmware-auto-bios.xml | 4 +-
...mware-auto-efi-aarch64.aarch64-latest.args | 22 +-
.../firmware-auto-efi-aarch64.xml | 4 +-
...ware-auto-efi-enrolled-keys-no-secboot.xml | 4 +-
...-auto-efi-enrolled-keys.x86_64-latest.args | 18 +-
.../firmware-auto-efi-enrolled-keys.xml | 4 +-
...fi-format-loader-qcow2.x86_64-latest.args} | 24 +-
...firmware-auto-efi-format-loader-qcow2.xml} | 6 +-
...efi-format-loader-raw.aarch64-latest.args} | 5 +-
...> firmware-auto-efi-format-loader-raw.xml} | 5 +-
...auto-efi-format-mismatch.x86_64-latest.err | 1 +
... => firmware-auto-efi-format-mismatch.xml} | 7 +-
...vram-qcow2-network-nbd.x86_64-latest.args} | 22 +-
...to-efi-format-nvram-qcow2-network-nbd.xml} | 11 +-
...ormat-nvram-qcow2-path.x86_64-latest.args} | 24 +-
...ware-auto-efi-format-nvram-qcow2-path.xml} | 6 +-
...efi-format-nvram-qcow2.x86_64-latest.args} | 24 +-
... firmware-auto-efi-format-nvram-qcow2.xml} | 6 +-
.../firmware-auto-efi-loader-insecure.xml | 4 +-
.../firmware-auto-efi-loader-path.xml | 4 +-
...-auto-efi-loader-secure.x86_64-latest.args | 18 +-
.../firmware-auto-efi-loader-secure.xml | 4 +-
...to-efi-no-enrolled-keys.x86_64-latest.args | 18 +-
.../firmware-auto-efi-no-enrolled-keys.xml | 4 +-
...are-auto-efi-no-secboot.x86_64-latest.args | 18 +-
.../firmware-auto-efi-no-secboot.xml | 4 +-
...re-auto-efi-nvram-file.x86_64-latest.args} | 13 +-
...5.xml => firmware-auto-efi-nvram-file.xml} | 9 +-
...fi-nvram-network-iscsi.x86_64-latest.args} | 16 +-
...firmware-auto-efi-nvram-network-iscsi.xml} | 9 +-
...-efi-nvram-network-nbd.x86_64-latest.args} | 16 +-
...> firmware-auto-efi-nvram-network-nbd.xml} | 9 +-
...firmware-auto-efi-nvram.x86_64-latest.args | 18 +-
.../firmware-auto-efi-nvram.xml | 6 +-
...rmware-auto-efi-secboot.x86_64-latest.args | 18 +-
.../firmware-auto-efi-secboot.xml | 4 +-
...mware-auto-efi-smm-off.x86_64-latest.args} | 17 +-
...-efi.xml => firmware-auto-efi-smm-off.xml} | 5 +-
...ware-auto-efi-stateless.x86_64-latest.args | 16 +-
.../firmware-auto-efi-stateless.xml | 4 +-
.../firmware-auto-efi.x86_64-latest.args | 18 +-
tests/qemuxml2argvdata/firmware-auto-efi.xml | 4 +-
...nual-bios-not-stateless.x86_64-latest.err} | 0
.../firmware-manual-bios-not-stateless.xml | 8 +-
.../firmware-manual-bios-stateless.args | 30 --
...-manual-bios-stateless.x86_64-latest.args} | 12 +-
.../firmware-manual-bios-stateless.xml | 8 +-
.../firmware-manual-bios.args | 30 --
...> firmware-manual-bios.x86_64-latest.args} | 12 +-
.../qemuxml2argvdata/firmware-manual-bios.xml | 8 +-
...nual-efi-acpi-aarch64.aarch64-latest.args} | 11 +-
.../firmware-manual-efi-acpi-aarch64.xml | 6 +-
...re-manual-efi-acpi-q35.x86_64-latest.args} | 11 +-
.../firmware-manual-efi-acpi-q35.xml | 6 +-
.../firmware-manual-efi-features.xml | 6 +-
...ware-manual-efi-no-path.x86_64-latest.err} | 0
.../firmware-manual-efi-no-path.xml | 6 +-
...al-efi-noacpi-aarch64.aarch64-latest.args} | 11 +-
.../firmware-manual-efi-noacpi-aarch64.xml | 6 +-
...e-manual-efi-noacpi-q35.x86_64-latest.err} | 0
.../firmware-manual-efi-noacpi-q35.xml | 6 +-
...e-manual-efi-nvram-file.x86_64-latest.args | 18 +-
.../firmware-manual-efi-nvram-file.xml | 8 +-
...efi-nvram-network-iscsi.x86_64-latest.args | 16 +-
...irmware-manual-efi-nvram-network-iscsi.xml | 6 +-
...l-efi-nvram-network-nbd.x86_64-latest.args | 16 +-
.../firmware-manual-efi-nvram-network-nbd.xml | 6 +-
.../firmware-manual-efi-nvram-stateless.xml | 8 +-
...re-manual-efi-nvram-template-stateless.xml | 6 +-
...nual-efi-nvram-template.x86_64-latest.args | 18 +-
.../firmware-manual-efi-nvram-template.xml | 6 +-
...manual-efi-rw-implicit.x86_64-latest.args} | 18 +-
...ml => firmware-manual-efi-rw-implicit.xml} | 8 +-
...firmware-manual-efi-rw.x86_64-latest.args} | 18 +-
...bios-rw.xml => firmware-manual-efi-rw.xml} | 8 +-
.../firmware-manual-efi-secure.args | 35 --
...ware-manual-efi-secure.x86_64-latest.args} | 20 +-
.../firmware-manual-efi-secure.xml | 8 +-
...re-manual-efi-stateless.x86_64-latest.args | 16 +-
.../firmware-manual-efi-stateless.xml | 6 +-
.../qemuxml2argvdata/firmware-manual-efi.args | 32 --
...=> firmware-manual-efi.x86_64-latest.args} | 13 +-
.../qemuxml2argvdata/firmware-manual-efi.xml | 8 +-
...ual-noefi-acpi-aarch64.aarch64-latest.err} | 0
.../firmware-manual-noefi-acpi-aarch64.xml | 4 +-
...-manual-noefi-acpi-q35.x86_64-latest.args} | 9 +-
.../firmware-manual-noefi-acpi-q35.xml | 4 +-
...-noefi-noacpi-aarch64.aarch64-latest.args} | 9 +-
.../firmware-manual-noefi-noacpi-aarch64.xml | 4 +-
...anual-noefi-noacpi-q35.x86_64-latest.args} | 9 +-
.../firmware-manual-noefi-noacpi-q35.xml | 4 +-
.../virtio-iommu-aarch64.aarch64-latest.args | 8 +-
tests/qemuxml2argvtest.c | 51 +-
.../aarch64-virt-graphics.aarch64-latest.xml | 2 +-
.../aarch64-virt-headless.aarch64-latest.xml | 2 +-
...ware-auto-bios-stateless.x86_64-latest.xml | 10 +-
.../firmware-auto-bios.x86_64-latest.xml | 9 +-
...rmware-auto-efi-aarch64.aarch64-latest.xml | 8 +-
...e-auto-efi-enrolled-keys.x86_64-latest.xml | 15 +-
...efi-format-loader-qcow2.x86_64-latest.xml} | 11 +-
...-efi-format-loader-raw.aarch64-latest.xml} | 8 +-
...nvram-qcow2-network-nbd.x86_64-latest.xml} | 10 +-
...format-nvram-qcow2-path.x86_64-latest.xml} | 11 +-
...-efi-format-nvram-qcow2.x86_64-latest.xml} | 11 +-
...e-auto-efi-loader-secure.x86_64-latest.xml | 12 +-
...uto-efi-no-enrolled-keys.x86_64-latest.xml | 13 +-
...ware-auto-efi-no-secboot.x86_64-latest.xml | 13 +-
...are-auto-efi-nvram-file.x86_64-latest.xml} | 10 +-
...efi-nvram-network-iscsi.x86_64-latest.xml} | 6 +-
...o-efi-nvram-network-nbd.x86_64-latest.xml} | 6 +-
.../firmware-auto-efi-nvram.x86_64-latest.xml | 12 +-
...irmware-auto-efi-secboot.x86_64-latest.xml | 14 +-
...rmware-auto-efi-smm-off.x86_64-latest.xml} | 12 +-
...ware-auto-efi-stateless.x86_64-latest.xml} | 10 +-
.../firmware-auto-efi.x86_64-latest.xml | 11 +-
...e-manual-bios-stateless.x86_64-latest.xml} | 11 +-
...=> firmware-manual-bios.x86_64-latest.xml} | 11 +-
...anual-efi-acpi-aarch64.aarch64-latest.xml} | 8 +-
...are-manual-efi-acpi-q35.x86_64-latest.xml} | 13 +-
...ual-efi-noacpi-aarch64.aarch64-latest.xml} | 9 +-
...re-manual-efi-nvram-file.x86_64-latest.xml | 10 +-
...-efi-nvram-network-iscsi.x86_64-latest.xml | 6 +-
...al-efi-nvram-network-nbd.x86_64-latest.xml | 6 +-
...nual-efi-nvram-template.x86_64-latest.xml} | 10 +-
...-manual-efi-rw-implicit.x86_64-latest.xml} | 11 +-
... firmware-manual-efi-rw.x86_64-latest.xml} | 11 +-
...mware-manual-efi-secure.x86_64-latest.xml} | 14 +-
...re-manual-efi-stateless.x86_64-latest.xml} | 11 +-
... => firmware-manual-efi.x86_64-latest.xml} | 11 +-
...e-manual-noefi-acpi-q35.x86_64-latest.xml} | 10 +-
...l-noefi-noacpi-aarch64.aarch64-latest.xml} | 7 +-
...manual-noefi-noacpi-q35.x86_64-latest.xml} | 13 +-
.../virtio-iommu-aarch64.aarch64-latest.xml | 4 +-
tests/qemuxml2xmltest.c | 32 +-
160 files changed, 1408 insertions(+), 990 deletions(-)
create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/65-ovmf-qcow2.json
create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/66-aavmf-qcow2.json
copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-auto-efi-format-loader-qcow2.x86_64-latest.args} (61%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-stateless.xml => firmware-auto-efi-format-loader-qcow2.xml} (81%)
copy tests/qemuxml2argvdata/{virtio-iommu-aarch64.aarch64-latest.args => firmware-auto-efi-format-loader-raw.aarch64-latest.args} (89%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-aarch64.xml => firmware-auto-efi-format-loader-raw.xml} (79%)
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-format-mismatch.xml} (75%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.args => firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.args} (61%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.xml => firmware-auto-efi-format-nvram-qcow2-network-nbd.xml} (63%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.args} (58%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-format-nvram-qcow2-path.xml} (76%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args} (61%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-loader-secure.xml => firmware-auto-efi-format-nvram-qcow2.xml} (81%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-auto-efi-nvram-file.x86_64-latest.args} (63%)
copy tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-q35.xml => firmware-auto-efi-nvram-file.xml} (60%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-iscsi.x86_64-latest.args => firmware-auto-efi-nvram-network-iscsi.x86_64-latest.args} (77%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-iscsi.xml => firmware-auto-efi-nvram-network-iscsi.xml} (73%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.args => firmware-auto-efi-nvram-network-nbd.x86_64-latest.args} (72%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.xml => firmware-auto-efi-nvram-network-nbd.xml} (67%)
copy tests/qemuxml2argvdata/{virtio-iommu-aarch64.aarch64-latest.args => firmware-auto-efi-smm-off.x86_64-latest.args} (67%)
copy tests/qemuxml2argvdata/{firmware-auto-efi.xml => firmware-auto-efi-smm-off.xml} (82%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-not-stateless.err => firmware-manual-bios-not-stateless.x86_64-latest.err} (100%)
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-bios-stateless.args
copy tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-bios-stateless.x86_64-latest.args} (60%)
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-bios.args
copy tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-bios.x86_64-latest.args} (60%)
rename tests/qemuxml2argvdata/{firmware-manual-efi-acpi-aarch64.args => firmware-manual-efi-acpi-aarch64.aarch64-latest.args} (62%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-manual-efi-acpi-q35.x86_64-latest.args} (64%)
rename tests/qemuxml2argvdata/{firmware-manual-efi-no-path.err => firmware-manual-efi-no-path.x86_64-latest.err} (100%)
rename tests/qemuxml2argvdata/{firmware-manual-efi-noacpi-aarch64.args => firmware-manual-efi-noacpi-aarch64.aarch64-latest.args} (62%)
rename tests/qemuxml2argvdata/{firmware-manual-efi-noacpi-q35.err => firmware-manual-efi-noacpi-q35.x86_64-latest.err} (100%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-rw.x86_64-latest.args => firmware-manual-efi-rw-implicit.x86_64-latest.args} (57%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-rw-implicit.xml => firmware-manual-efi-rw-implicit.xml} (60%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-rw-implicit.x86_64-latest.args => firmware-manual-efi-rw.x86_64-latest.args} (57%)
rename tests/qemuxml2argvdata/{firmware-manual-bios-rw.xml => firmware-manual-efi-rw.xml} (59%)
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-efi-secure.args
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.x86_64-latest.args => firmware-manual-efi-secure.x86_64-latest.args} (70%)
delete mode 100644 tests/qemuxml2argvdata/firmware-manual-efi.args
rename tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-manual-efi.x86_64-latest.args} (63%)
rename tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-aarch64.err => firmware-manual-noefi-acpi-aarch64.aarch64-latest.err} (100%)
rename tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-q35.args => firmware-manual-noefi-acpi-q35.x86_64-latest.args} (63%)
rename tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-aarch64.args => firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args} (60%)
rename tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-noefi-noacpi-q35.x86_64-latest.args} (64%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-format-loader-qcow2.x86_64-latest.xml} (74%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-auto-efi-format-loader-raw.aarch64-latest.xml} (74%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml => firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.xml} (76%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.xml} (75%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-format-nvram-qcow2.x86_64-latest.xml} (74%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-auto-efi-nvram-file.x86_64-latest.xml} (78%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-network-iscsi.x86_64-latest.xml => firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml} (89%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml => firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml} (88%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-smm-off.x86_64-latest.xml} (75%)
copy tests/qemuxml2xmloutdata/{firmware-auto-bios-stateless.x86_64-latest.xml => firmware-auto-efi-stateless.x86_64-latest.xml} (82%)
rename tests/qemuxml2xmloutdata/{firmware-manual-bios-stateless.xml => firmware-manual-bios-stateless.x86_64-latest.xml} (69%)
rename tests/qemuxml2xmloutdata/{firmware-manual-bios.xml => firmware-manual-bios.x86_64-latest.xml} (69%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-efi-acpi-aarch64.aarch64-latest.xml} (76%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-manual-efi-acpi-q35.x86_64-latest.xml} (76%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml} (76%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-nvram-template.x86_64-latest.xml} (78%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-rw-implicit.x86_64-latest.xml} (72%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-rw.x86_64-latest.xml} (72%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-manual-efi-secure.x86_64-latest.xml} (73%)
copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-stateless.x86_64-latest.xml} (72%)
rename tests/qemuxml2xmloutdata/{firmware-manual-efi.xml => firmware-manual-efi.x86_64-latest.xml} (70%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi.x86_64-latest.xml => firmware-manual-noefi-acpi-q35.x86_64-latest.xml} (86%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-noefi-noacpi-aarch64.aarch64-latest.xml} (88%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi.x86_64-latest.xml => firmware-manual-noefi-noacpi-q35.x86_64-latest.xml} (83%)
--
2.39.1
1 year, 9 months
[PATCH 0/6] Generate ACL permision data in apibuild
by Peter Krempa
Peter Krempa (6):
remote_protocol: Fix list of supported ACL object names
apibuild: Add infrastructure for generating ACL flag info into
function docs
scripts/apibuild: Extract and format API ACLs
docs/newapi.xsl: Take API flag data from libvirt-api.xml rather than
access/libvirt-access.xml
docs|access: Don't build the ACL flags into a separate XML
gendispatch: Drop 'aclapi' mode
docs/html/meson.build | 32 +------
docs/meson.build | 3 +
docs/newapi.xsl | 20 ++---
scripts/apibuild.py | 163 ++++++++++++++++++++++++++++++++++-
src/access/meson.build | 16 ----
src/remote/remote_protocol.x | 5 +-
src/rpc/gendispatch.pl | 64 +-------------
7 files changed, 176 insertions(+), 127 deletions(-)
--
2.39.2
1 year, 9 months
[PATCH 0/4] qemu: Let virCommand report errors
by Michal Privoznik
In a lot of places we catch errors from qemuSecurityCommandRun() only to
produce an error report. But we can let virCommand module do the same.
Michal Prívozník (4):
qemu_slirp: Don't set errfd when starting slirp helper
qemu: Don't overwrite error from qemuSecurityCommandRun()
qemu: Drop @cmdret argument from qemuSecurityCommandRun()
qemu: Let virCommand module translate exitstatus
src/qemu/qemu_dbus.c | 11 +----------
src/qemu/qemu_passt.c | 12 +-----------
src/qemu/qemu_security.c | 13 ++++++-------
src/qemu/qemu_security.h | 3 +--
src/qemu/qemu_slirp.c | 12 +-----------
src/qemu/qemu_tpm.c | 9 +--------
src/qemu/qemu_vhost_user_gpu.c | 11 ++---------
7 files changed, 13 insertions(+), 58 deletions(-)
--
2.39.2
1 year, 9 months