This wires up support for resetting NVRAM for all APIs that allow
this feature.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
docs/manpages/virsh.rst | 21 +++++++++++++++++----
tools/virsh-domain.c | 18 ++++++++++++++++++
tools/virsh-snapshot.c | 6 ++++++
3 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index e28927ed6c..429879d2dd 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -1455,7 +1455,7 @@ create
::
create FILE [--console] [--paused] [--autodestroy]
- [--pass-fds N,M,...] [--validate]
+ [--pass-fds N,M,...] [--validate] [--reset-nvram]
Create a domain from an XML <file>. Optionally, *--validate* option can be
passed to validate the format of the input XML file against an internal RNG
@@ -1478,6 +1478,9 @@ of open file descriptors which should be pass on into the guest.
The
file descriptors will be re-numbered in the guest, starting from 3. This
is only supported with container based virtualization.
+If *--reset-nvram* is specified, any existing NVRAM file will be deleted
+and re-initialized from its pristine template.
+
**Example:**
#. prepare a template from an existing domain (skip directly to 3a if writing
@@ -3736,7 +3739,7 @@ restore
::
restore state-file [--bypass-cache] [--xml file]
- [{--running | --paused}]
+ [{--running | --paused}] [--reset-nvram]
Restores a domain from a ``virsh save`` state file. See *save* for more info.
@@ -3754,6 +3757,9 @@ save image to decide between running or paused; passing either the
*--running* or *--paused* flag will allow overriding which state the
domain should be started in.
+If *--reset-nvram* is specified, any existing NVRAM file will be deleted
+and re-initialized from its pristine template.
+
``Note``: To avoid corrupting file system contents within the domain, you
should not reuse the saved state file for a second ``restore`` unless you
have also reverted all storage volumes back to the same contents as when
@@ -4350,7 +4356,7 @@ start
start domain-name-or-uuid [--console] [--paused]
[--autodestroy] [--bypass-cache] [--force-boot]
- [--pass-fds N,M,...]
+ [--pass-fds N,M,...] [--reset-nvram]
Start a (previously defined) inactive domain, either from the last
``managedsave`` state, or via a fresh boot if no managedsave state is
@@ -4369,6 +4375,9 @@ of open file descriptors which should be pass on into the guest.
The
file descriptors will be re-numbered in the guest, starting from 3. This
is only supported with container based virtualization.
+If *--reset-nvram* is specified, any existing NVRAM file will be deleted
+and re-initialized from its pristine template.
+
suspend
-------
@@ -7352,7 +7361,8 @@ snapshot-revert
::
- snapshot-revert domain {snapshot | --current} [{--running | --paused}] [--force]
+ snapshot-revert domain {snapshot | --current} [{--running | --paused}]
+ [--force] [--reset-nvram]
Revert the given domain to the snapshot specified by *snapshot*, or to
the current snapshot with *--current*. Be aware
@@ -7398,6 +7408,9 @@ requires the use of *--force* to proceed:
likely cause extensive filesystem corruption or crashes due to swap content
mismatches when run.
+If *--reset-nvram* is specified, any existing NVRAM file will be deleted
+and re-initialized from its pristine template.
+
snapshot-delete
---------------
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 43d310f2af..97986788d7 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -4010,6 +4010,10 @@ static const vshCmdOptDef opts_start[] = {
.completer = virshCompleteEmpty,
.help = N_("pass file descriptors N,M,... to the guest")
},
+ {.name = "reset-nvram",
+ .type = VSH_OT_BOOL,
+ .help = N_("re-initialize NVRAM from its pristine template")
+ },
{.name = NULL}
};
@@ -4087,6 +4091,8 @@ cmdStart(vshControl *ctl, const vshCmd *cmd)
flags |= VIR_DOMAIN_START_BYPASS_CACHE;
if (vshCommandOptBool(cmd, "force-boot"))
flags |= VIR_DOMAIN_START_FORCE_BOOT;
+ if (vshCommandOptBool(cmd, "reset-nvram"))
+ flags |= VIR_DOMAIN_START_RESET_NVRAM;
/* We can emulate force boot, even for older servers that reject it. */
if (flags & VIR_DOMAIN_START_FORCE_BOOT) {
@@ -5268,6 +5274,10 @@ static const vshCmdOptDef opts_restore[] = {
.type = VSH_OT_BOOL,
.help = N_("restore domain into paused state")
},
+ {.name = "reset-nvram",
+ .type = VSH_OT_BOOL,
+ .help = N_("re-initialize NVRAM from its pristine template")
+ },
{.name = NULL}
};
@@ -5289,6 +5299,8 @@ cmdRestore(vshControl *ctl, const vshCmd *cmd)
flags |= VIR_DOMAIN_SAVE_RUNNING;
if (vshCommandOptBool(cmd, "paused"))
flags |= VIR_DOMAIN_SAVE_PAUSED;
+ if (vshCommandOptBool(cmd, "reset-nvram"))
+ flags |= VIR_DOMAIN_SAVE_RESET_NVRAM;
if (vshCommandOptStringReq(ctl, cmd, "xml", &xmlfile) < 0)
return false;
@@ -8093,6 +8105,10 @@ static const vshCmdOptDef opts_create[] = {
.type = VSH_OT_BOOL,
.help = N_("validate the XML against the schema")
},
+ {.name = "reset-nvram",
+ .type = VSH_OT_BOOL,
+ .help = N_("re-initialize NVRAM from its pristine template")
+ },
{.name = NULL}
};
@@ -8125,6 +8141,8 @@ cmdCreate(vshControl *ctl, const vshCmd *cmd)
flags |= VIR_DOMAIN_START_AUTODESTROY;
if (vshCommandOptBool(cmd, "validate"))
flags |= VIR_DOMAIN_START_VALIDATE;
+ if (vshCommandOptBool(cmd, "reset-nvram"))
+ flags |= VIR_DOMAIN_START_RESET_NVRAM;
if (nfds)
dom = virDomainCreateXMLWithFiles(priv->conn, buffer, nfds, fds, flags);
diff --git a/tools/virsh-snapshot.c b/tools/virsh-snapshot.c
index 154e82b48b..b86fa73ac2 100644
--- a/tools/virsh-snapshot.c
+++ b/tools/virsh-snapshot.c
@@ -1725,6 +1725,10 @@ static const vshCmdOptDef opts_snapshot_revert[] = {
.type = VSH_OT_BOOL,
.help = N_("try harder on risky reverts")
},
+ {.name = "reset-nvram",
+ .type = VSH_OT_BOOL,
+ .help = N_("re-initialize NVRAM from its pristine template")
+ },
{.name = NULL}
};
@@ -1742,6 +1746,8 @@ cmdDomainSnapshotRevert(vshControl *ctl, const vshCmd *cmd)
flags |= VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING;
if (vshCommandOptBool(cmd, "paused"))
flags |= VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED;
+ if (vshCommandOptBool(cmd, "reset-nvram"))
+ flags |= VIR_DOMAIN_SNAPSHOT_REVERT_RESET_NVRAM;
/* We want virsh snapshot-revert --force to work even when talking
* to older servers that did the unsafe revert by default but
* reject the flag, so we probe without the flag, and only use it
--
2.34.1