[PATCH] tools/virsh-pool: refactor smaller functions
by Kristina Hanicova
I think these functions look much more readable with just simple
if conditions.
Signed-off-by: Kristina Hanicova <khanicov(a)redhat.com>
---
tools/virsh-pool.c | 68 ++++++++++++++++++++--------------------------
1 file changed, 30 insertions(+), 38 deletions(-)
diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c
index 1a2ab8cc53..c65e8163a6 100644
--- a/tools/virsh-pool.c
+++ b/tools/virsh-pool.c
@@ -269,7 +269,6 @@ cmdPoolCreate(vshControl *ctl, const vshCmd *cmd)
{
virStoragePoolPtr pool;
const char *from = NULL;
- bool ret = true;
g_autofree char *buffer = NULL;
bool build;
bool overwrite;
@@ -297,17 +296,15 @@ cmdPoolCreate(vshControl *ctl, const vshCmd *cmd)
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0)
return false;
- pool = virStoragePoolCreateXML(priv->conn, buffer, flags);
-
- if (pool != NULL) {
- vshPrintExtra(ctl, _("Pool %s created from %s\n"),
- virStoragePoolGetName(pool), from);
- virStoragePoolFree(pool);
- } else {
+ if (!(pool = virStoragePoolCreateXML(priv->conn, buffer, flags))) {
vshError(ctl, _("Failed to create pool from %s"), from);
- ret = false;
+ return false;
}
- return ret;
+
+ vshPrintExtra(ctl, _("Pool %s created from %s\n"),
+ virStoragePoolGetName(pool), from);
+ virStoragePoolFree(pool);
+ return true;
}
static const vshCmdOptDef opts_pool_define_as[] = {
@@ -490,17 +487,16 @@ cmdPoolCreateAs(vshControl *ctl, const vshCmd *cmd)
if (printXML) {
vshPrint(ctl, "%s", xml);
- } else {
- pool = virStoragePoolCreateXML(priv->conn, xml, flags);
+ return true;
+ }
- if (pool != NULL) {
- vshPrintExtra(ctl, _("Pool %s created\n"), name);
- virStoragePoolFree(pool);
- } else {
- vshError(ctl, _("Failed to create pool %s"), name);
- return false;
- }
+ if (!(pool = virStoragePoolCreateXML(priv->conn, xml, flags))) {
+ vshError(ctl, _("Failed to create pool %s"), name);
+ return false;
}
+
+ vshPrintExtra(ctl, _("Pool %s created\n"), name);
+ virStoragePoolFree(pool);
return true;
}
@@ -532,7 +528,6 @@ cmdPoolDefine(vshControl *ctl, const vshCmd *cmd)
{
virStoragePoolPtr pool;
const char *from = NULL;
- bool ret = true;
g_autofree char *buffer = NULL;
unsigned int flags = 0;
virshControl *priv = ctl->privData;
@@ -546,17 +541,15 @@ cmdPoolDefine(vshControl *ctl, const vshCmd *cmd)
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0)
return false;
- pool = virStoragePoolDefineXML(priv->conn, buffer, flags);
-
- if (pool != NULL) {
- vshPrintExtra(ctl, _("Pool %s defined from %s\n"),
- virStoragePoolGetName(pool), from);
- virStoragePoolFree(pool);
- } else {
+ if (!(pool = virStoragePoolDefineXML(priv->conn, buffer, flags))) {
vshError(ctl, _("Failed to define pool from %s"), from);
- ret = false;
+ return false;
}
- return ret;
+
+ vshPrintExtra(ctl, _("Pool %s defined from %s\n"),
+ virStoragePoolGetName(pool), from);
+ virStoragePoolFree(pool);
+ return true;
}
/*
@@ -586,17 +579,16 @@ cmdPoolDefineAs(vshControl *ctl, const vshCmd *cmd)
if (printXML) {
vshPrint(ctl, "%s", xml);
- } else {
- pool = virStoragePoolDefineXML(priv->conn, xml, 0);
+ return true;
+ }
- if (pool != NULL) {
- vshPrintExtra(ctl, _("Pool %s defined\n"), name);
- virStoragePoolFree(pool);
- } else {
- vshError(ctl, _("Failed to define pool %s"), name);
- return false;
- }
+ if (!(pool = virStoragePoolDefineXML(priv->conn, xml, 0))) {
+ vshError(ctl, _("Failed to define pool %s"), name);
+ return false;
}
+
+ vshPrintExtra(ctl, _("Pool %s defined\n"), name);
+ virStoragePoolFree(pool);
return true;
}
--
2.31.1
3 years, 2 months
[libvirt PATCH 1/2] docs: Expand manpage documentation for nodedev commands
by Jonathon Jongsma
Bring the documentation for nodedev-list up to date with the latest
code, especially documenting the --active and -all options.
Also add documentation for the nodedev-define, nodedev-undefine, and
nodedev-start commands.
Signed-off-by: Jonathon Jongsma <jjongsma(a)redhat.com>
---
docs/manpages/virsh.rst | 48 +++++++++++++++++++++++++++++++++++++----
1 file changed, 44 insertions(+), 4 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index ce98283ae3..73daf2735f 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -5020,6 +5020,44 @@ Note that this makes libvirt quit managing a host device, and may even
make that device unusable by the rest of the physical host until a reboot.
+nodedev-define
+--------------
+
+**Syntax:**
+
+::
+
+ nodedev-define FILE
+
+Define an inactive persistent device or modify an existing persistent one from
+the XML *FILE*.
+
+
+nodedev-undefine
+----------------
+
+**Syntax:**
+
+::
+
+ nodedev-undefine device
+
+Undefine the configuration for a persistent device. If the device is active,
+make it transient.
+
+
+nodedev-start
+-------------
+
+**Syntax:**
+
+::
+
+ nodedev-start network
+
+Start a (previously defined) inactive device.
+
+
nodedev-detach
--------------
@@ -5076,16 +5114,18 @@ nodedev-list
::
- nodedev-list cap --tree
+ nodedev-list [--cap capability] [--tree] [--inactive | --all]
List all of the devices available on the node that are known by libvirt.
*cap* is used to filter the list by capability types, the types must be
separated by comma, e.g. --cap pci,scsi. Valid capability types include
'system', 'pci', 'usb_device', 'usb', 'net', 'scsi_host', 'scsi_target',
'scsi', 'storage', 'fc_host', 'vports', 'scsi_generic', 'drm', 'mdev',
-'mdev_types', 'ccw', 'css', 'ap_card', 'ap_queue', 'ap_matrix'.
-If *--tree* is used, the output is formatted in a tree representing parents of each
-node. *cap* and *--tree* are mutually exclusive.
+'mdev_types', 'ccw', 'css', 'ap_card', 'ap_queue', 'ap_matrix'. By default,
+only active devices are listed. *--inactive* is used to list only inactive
+devices, and *-all* is used to list both active and inactive devices.
+If *--tree* is used, the output is formatted in a tree representing parents of
+each node. *--tree* is mutually exclusive with all other options.
nodedev-reattach
--
2.31.1
3 years, 2 months
[PATCH] qemu: Fix typo in qemuBuilNumaCellCache
by Michal Privoznik
The function should be named qemuBuildNumaCellCache (note the
missing 'd' in Build).
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Pushed as trivial.
src/qemu/qemu_command.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 4d29313f45..73868ab4b7 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7281,9 +7281,9 @@ qemuBuildIOThreadCommandLine(virCommand *cmd,
static int
-qemuBuilNumaCellCache(virCommand *cmd,
- const virDomainDef *def,
- size_t cell)
+qemuBuildNumaCellCache(virCommand *cmd,
+ const virDomainDef *def,
+ size_t cell)
{
size_t ncaches = virDomainNumaGetNodeCacheCount(def->numa, cell);
size_t i;
@@ -7540,7 +7540,7 @@ qemuBuildNumaCommandLine(virQEMUDriverConfig *cfg,
/* This can't be moved into any of the loops above,
* because hmat-cache can be specified only after hmat-lb. */
for (i = 0; i < ncells; i++) {
- if (qemuBuilNumaCellCache(cmd, def, i) < 0)
+ if (qemuBuildNumaCellCache(cmd, def, i) < 0)
goto cleanup;
}
}
--
2.32.0
3 years, 2 months
[PATCH v2 0/3] qapi & doc: deprecate drive-backup
by Vladimir Sementsov-Ogievskiy
Hi all!
See 03 commit message for details. 01-02 are preparation docs update.
v2: add a lot of documentation changes
v1 was "[PATCH] qapi: deprecate drive-backup"
Supersedes: <20210423125900.3640-1-vsementsov(a)virtuozzo.com>
Vladimir Sementsov-Ogievskiy (3):
docs/block-replication: use blockdev-backup
docs/interop/bitmaps: use blockdev-backup
qapi: deprecate drive-backup
docs/block-replication.txt | 4 +-
docs/interop/bitmaps.rst | 285 +++++++++++++++++++------
docs/interop/live-block-operations.rst | 47 ++--
docs/system/deprecated.rst | 11 +
qapi/block-core.json | 5 +-
5 files changed, 263 insertions(+), 89 deletions(-)
--
2.29.2
3 years, 2 months
[libvirt PATCH] virsh: Make code flow in cmdManagedSaveRemove more straightforward
by Jiri Denemark
By doing so we can get rid of the code which violates our coding style
guidelines.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
tools/virsh-domain.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index e5bd1fdd75..ca56c3b33d 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -4788,18 +4788,19 @@ cmdManagedSaveRemove(vshControl *ctl, const vshCmd *cmd)
return false;
}
- if (hassave) {
- if (virDomainManagedSaveRemove(dom, 0) < 0) {
- vshError(ctl, _("Failed to remove managed save image for domain '%s'"),
- name);
- return false;
- }
- else
- vshPrintExtra(ctl, _("Removed managedsave image for domain '%s'"), name);
- }
- else
+ if (hassave == 0) {
vshPrintExtra(ctl, _("Domain '%s' has no manage save image; removal skipped"),
name);
+ return true;
+ }
+
+ if (virDomainManagedSaveRemove(dom, 0) < 0) {
+ vshError(ctl, _("Failed to remove managed save image for domain '%s'"),
+ name);
+ return false;
+ }
+
+ vshPrintExtra(ctl, _("Removed managedsave image for domain '%s'"), name);
return true;
}
--
2.33.0
3 years, 2 months
[PATCH] docs: fix migration_features element name in formatcaps.html.in
by Andrea Bolognani
From: Robin Lee <cheeselee(a)fedoraproject.org>
Signed-off-by: Robin Lee <cheeselee(a)fedoraproject.org>
Reviewed-by: Andrea Bolognani <abologna(a)redhat.com>
---
Taken from
https://gitlab.com/libvirt/libvirt/-/merge_requests/106
I've pushed it already.
docs/formatcaps.html.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/formatcaps.html.in b/docs/formatcaps.html.in
index 59d21a7d9e..09662f78c8 100644
--- a/docs/formatcaps.html.in
+++ b/docs/formatcaps.html.in
@@ -43,7 +43,7 @@
<dd>whether host is capable of memory suspend, disk hibernation, or
hybrid suspend.</dd>
- <dt><code>migration</code></dt>
+ <dt><code>migration_features</code></dt>
<dd>This element exposes information on the hypervisor's migration
capabilities, like live migration, supported URI transports, and so
on.</dd>
--
2.31.1
3 years, 2 months
[PATCH] virsh: Add QMP command wrapping for 'qemu-monitor-command'
by Peter Krempa
Issuing simple QMP commands is pain as they need to be wrapped by the
JSON wrapper:
{ "execute": "COMMAND" }
and optionally also:
{ "execute": "COMMAND", "arguments":...}
For simple commands without arguments we can add syntax sugar to virsh
which allows simple usage of QMP and additionally prepares also for
passing through of the 'arguments' section:
virsh qemu-monitor-command --qmpwrap $VM query-status
is equivalent to
virsh qemu-monitor-command $VM '{"execute":"query-status"}'
and
virsh qemu-monitor-command --qmpwrap $VM query-named-block-nodes '{"flat":true}'
is equivalent to
virsh qemu-monitor-command $VM '{"execute":"query-named-block-nodes", "arguments":{"flat":true}}'
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
I originally called the flag '--qmp' but that could be confusing given
that we have '--hmp'. On the other hand it's shorter so I wouldn't mind
turning it back to '--qmp'.
docs/manpages/virsh.rst | 9 ++++++++-
tools/virsh-domain.c | 31 ++++++++++++++++++++++++++++---
2 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index 9561b3f59d..b8cb3cfbc2 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -7694,7 +7694,8 @@ qemu-monitor-command
::
- qemu-monitor-command domain { [--hmp] | [--pretty] [--return-value] } command...
+ qemu-monitor-command domain { [--hmp] | [--qmpwrap] [--pretty]
+ [--return-value] } command...
Send an arbitrary monitor command *command* to domain *domain* through the
QEMU monitor. The results of the command will be printed on stdout.
@@ -7705,6 +7706,12 @@ a space in between before passing the single command to the monitor.
Note that libvirt uses the QMP to talk to qemu so *command* must be valid JSON
in QMP format to work properly.
+If *--qmpwrap* is passed the first argument passed as *command* is used as a QMP
+command name and appropriately wrapped into a JSON block. Additionally a second
+argument passed as *command* is appended as value of the 'arguments' parameter
+of the QMP command verbatim. *Note* that in the future automatic formatting
+*--qmpwrap* of the arguments might be added, so scripts should format their own JSON.
+
If *--pretty* is given the QMP reply is pretty-printed.
If *--return-value* is given the 'return' key of the QMP response object is
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index e5bd1fdd75..ac57196b20 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -9380,6 +9380,10 @@ static const vshCmdOptDef opts_qemu_monitor_command[] = {
.type = VSH_OT_BOOL,
.help = N_("extract the value of the 'return' key from the returned string")
},
+ {.name = "qmpwrap",
+ .type = VSH_OT_BOOL,
+ .help = N_("wrap the 'cmd' argument in JSON wrapper for QMP")
+ },
{.name = "cmd",
.type = VSH_OT_ARGV,
.flags = VSH_OFLAG_REQ,
@@ -9405,14 +9409,35 @@ cmdQemuMonitorCommand(vshControl *ctl, const vshCmd *cmd)
VSH_EXCLUSIVE_OPTIONS("hmp", "pretty");
VSH_EXCLUSIVE_OPTIONS("hmp", "return-value");
+ VSH_EXCLUSIVE_OPTIONS("hmp", "qmpwrap");
if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
return false;
- while ((opt = vshCommandOptArgv(ctl, cmd, opt)))
- virBufferAsprintf(&buf, "%s ", opt->data);
+ if (vshCommandOptBool(cmd, "qmpwrap")) {
+ const char *command = NULL;
+ const char *arguments = NULL;
- virBufferTrim(&buf, " ");
+ if ((opt = vshCommandOptArgv(ctl, cmd, opt)))
+ command = opt->data;
+ if ((opt = vshCommandOptArgv(ctl, cmd, opt)))
+ arguments = opt->data;
+
+ if (!command || (arguments && vshCommandOptArgv(ctl, cmd, opt))) {
+ vshError(ctl, "%s", _("--qmpwrap option requires 1 or 2 arguments"));
+ return false;
+ }
+
+ virBufferAsprintf(&buf, "{\"execute\":\"%s\"", command);
+ if (arguments)
+ virBufferAsprintf(&buf, ", \"arguments\":%s", arguments);
+ virBufferAddLit(&buf, "}");
+ } else {
+ while ((opt = vshCommandOptArgv(ctl, cmd, opt)))
+ virBufferAsprintf(&buf, "%s ", opt->data);
+
+ virBufferTrim(&buf, " ");
+ }
monitor_cmd = virBufferContentAndReset(&buf);
--
2.31.1
3 years, 2 months
[libvirt PATCH v2] news: mention new nodedev API
by Jonathon Jongsma
Add news item about the new API for node devices.
Signed-off-by: Jonathon Jongsma <jjongsma(a)redhat.com>
---
NEWS.rst | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/NEWS.rst b/NEWS.rst
index 4521499db7..fd20e50d18 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -17,6 +17,18 @@ v7.8.0 (unreleased)
* **New features**
+ * nodedev: Add ability to automatically start mediated devices
+
+ The autostart status of a persistent mediated devices can be managed with
+ the new APIs ``virNodeDeviceSetAutostart()`` and
+ ``virNodeDeviceGetAutostart()``. The corresponding virsh command is
+ ``nodedev-autostart``. In addition, two new APIs were added to get
+ additional information about node devices: ``virNodeDeviceIsPersistent()``
+ checks whether the device is persistently defined, and
+ ``virNodeDeviceIsActive()`` checks whether the node device is currently
+ active. This information can also be retrieved with the new virsh command
+ ``nodedev-info``.
+
* **Improvements**
* **Bug fixes**
--
2.31.1
3 years, 2 months
[PATCH] qemu: validate: Allow 'preserve' action for on_crash lifecycle action
by Peter Krempa
In fact keeping the VM around for debugging is a desirable configuration
and actually the implementation has no code as we keep the VM around.
Remove the validation and add a note that it's actually used.
Fixes: b1b85a475fb251b9068b75f629479f5c452f1b43
Reported-by: Christian Borntraeger <borntraeger(a)de.ibm.com>
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_driver.c | 1 +
src/qemu/qemu_validate.c | 5 ++---
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index dfc27572c4..6ae678b165 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -3647,6 +3647,7 @@ processGuestPanicEvent(virQEMUDriver *driver,
break;
case VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE:
+ /* the VM is kept around for debugging */
break;
default:
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index 9d93f373ab..6b685881a8 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -1083,10 +1083,9 @@ qemuValidateLifecycleAction(virDomainLifecycleAction onPoweroff,
/* The qemu driver doesn't yet implement any meaningful handling for
* VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE */
if (onPoweroff == VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE ||
- onReboot == VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE ||
- onCrash == VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE) {
+ onReboot == VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("qemu driver doesn't support the 'preserve' action for 'on_reboot'/'on_poweroff'/'on_crash'"));
+ _("qemu driver doesn't support the 'preserve' action for 'on_reboot'/'on_poweroff'"));
return -1;
}
--
2.31.1
3 years, 2 months
[PATCH 00/22] qemu: Fix mess with lifecycle actions and unbreak transient disks
by Peter Krempa
While investigating how to fix issue with transient disks breaking when
-no-shutdown is not used I've ended up figuring out that lifecycle
action handling in the qemu driver is very broken.
Unbreak the handling by rejecting some actions which were never
implemented, add support for 'set-action' qmp command and use it to
update the 'reset' action in qemu and always use '-no-shutdown'.
Peter Krempa (22):
qemuMonitorJSONSetWatchdogAction: Use automatic memory clearing
qemuDomainSetLifecycleAction: Add a note about argument range-check
qemu: driver: Use 'qemuDomainSaveStatus' for saving status XML
qemu: validate: Reformat header and purge unused includes
qemu: Reject 'rename-restart' action for
'on_reboot'/'on_poweroff'/'on_crash'
qemu: driver: Validate lifecycle actions in
'qemuDomainSetLifecycleAction'
qemu: Reject 'preserve' action for
'on_reboot'/'on_poweroff'/'on_crash'
qemu: Honor 'restart' action for 'on_poweroff'
qemu: capablities: Detect presence of 'set-action' as
QEMU_CAPS_SET_ACTION
qemu: monitor: Implement monitor code for 'set-action' command
qemuDomainAttachWatchdog: Use 'set-action' instead of
'watchdog-set-action' if supported
qemuxml2argvtest: Add 'LATEST' version of 'misc-no-reboot' test case
qemuDomainObjPrivate: Annotate 'allowReboot' field
qemu: migration: Don't transfer 'allowReboot' flag
qemu: domain: Remove qemuDomainIsUsingNoShutdown
qemuDomainSetLifecycleAction: Forbid live update of 'on_reboot'
qemuProcessHandleReset: Don't emulate lifecycle actions for RESET
event
qemuProcessLaunch: Setup handling of 'on_reboot' via QMP when starting
the process
qemu: command: Always use '-no-shutdown'
qemu: process: Don't set 'allowReboot' when qemu supports 'set-action'
qemuDomainSetLifecycleAction: Properly update 'onReboot' action in
qemu
qemu: process: Ignore 'RESET' event during startup
docs/formatdomain.rst | 8 +-
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 14 +-
src/qemu/qemu_domain.c | 16 --
src/qemu/qemu_domain.h | 11 +-
src/qemu/qemu_driver.c | 201 +++++++++++-------
src/qemu/qemu_hotplug.c | 54 ++++-
src/qemu/qemu_migration.c | 5 -
src/qemu/qemu_migration_cookie.c | 22 --
src/qemu/qemu_migration_cookie.h | 4 -
src/qemu/qemu_monitor.c | 16 ++
src/qemu/qemu_monitor.h | 49 +++++
src/qemu/qemu_monitor_json.c | 95 ++++++++-
src/qemu/qemu_monitor_json.h | 7 +
src/qemu/qemu_process.c | 85 +++++---
src/qemu/qemu_validate.c | 51 +++++
src/qemu/qemu_validate.h | 31 +--
.../caps_6.0.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_6.0.0.s390x.xml | 1 +
.../caps_6.0.0.x86_64.xml | 1 +
.../caps_6.1.0.x86_64.xml | 1 +
.../basic-xml2xml-out.xml | 1 -
.../full-xml2xml-out.xml | 1 -
.../modern-dom-out-dest.xml | 1 -
.../modern-dom-out-source.xml | 1 -
.../nbd-bitmaps-xml2xml-out.xml | 1 -
tests/qemumonitorjsontest.c | 6 +
.../misc-no-reboot.x86_64-latest.args | 35 +++
tests/qemuxml2argvtest.c | 1 +
30 files changed, 529 insertions(+), 194 deletions(-)
create mode 100644 tests/qemuxml2argvdata/misc-no-reboot.x86_64-latest.args
--
2.31.1
3 years, 2 months