diff --git a/include/libvirt/libvirt-domain-snapshot.h b/include/libvirt/libvirt-domain-snapshot.h index 90673ed0fb..d729d1a532 100644 --- a/include/libvirt/libvirt-domain-snapshot.h +++ b/include/libvirt/libvirt-domain-snapshot.h @@ -198,6 +198,7 @@ typedef enum { VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING = 1 << 0, /* Run after revert */ VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED = 1 << 1, /* Pause after revert */ VIR_DOMAIN_SNAPSHOT_REVERT_FORCE = 1 << 2, /* Allow risky reverts */ + VIR_DOMAIN_SNAPSHOT_REVERT_RESET_NVRAM = 1 << 3, /* Re-initialize NVRAM from template */ } virDomainSnapshotRevertFlags; /* Revert the domain to a point-in-time snapshot. The diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index 374859fdff..8c16598817 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -302,6 +302,7 @@ typedef enum { VIR_DOMAIN_START_BYPASS_CACHE = 1 << 2, /* Avoid file system cache pollution */ VIR_DOMAIN_START_FORCE_BOOT = 1 << 3, /* Boot, discarding any managed save */ VIR_DOMAIN_START_VALIDATE = 1 << 4, /* Validate the XML document against schema */ + VIR_DOMAIN_START_RESET_NVRAM = 1 << 5, /* Re-initialize NVRAM from template */ } virDomainCreateFlags; @@ -1268,6 +1269,7 @@ typedef enum { VIR_DOMAIN_SAVE_BYPASS_CACHE = 1 << 0, /* Avoid file system cache pollution */ VIR_DOMAIN_SAVE_RUNNING = 1 << 1, /* Favor running over paused */ VIR_DOMAIN_SAVE_PAUSED = 1 << 2, /* Favor paused over running */ + VIR_DOMAIN_SAVE_RESET_NVRAM = 1 << 3, /* Re-initialize NVRAM from template */ } virDomainSaveRestoreFlags; int virDomainSave (virDomainPtr domain, diff --git a/src/libvirt-domain-snapshot.c b/src/libvirt-domain-snapshot.c index edbf25b04d..69845918a2 100644 --- a/src/libvirt-domain-snapshot.c +++ b/src/libvirt-domain-snapshot.c @@ -979,6 +979,10 @@ virDomainSnapshotHasMetadata(virDomainSnapshotPtr snapshot, * inactive snapshots with a @flags request to start the domain after * the revert. * + * If @flags includes VIR_DOMAIN_SNAPSHOT_REVERT_RESET_NVRAM, then + * libvirt will discard any existing NVRAM file and re-initialize + * NVRAM from the pristine template. + * * Returns 0 if the creation is successful, -1 on error. */ int diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index f2d5f834ef..b8a6f10333 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -154,6 +154,10 @@ virDomainGetConnect(virDomainPtr dom) * block attempts at migration. Hypervisors may also block save-to-file, * or snapshots. * + * If @flags includes VIR_DOMAIN_START_RESET_NVRAM, then libvirt will + * discard any existing NVRAM file and re-initialize NVRAM from the + * pristine template. + * * virDomainFree should be used to free the resources after the * domain object is no longer needed. * @@ -1015,6 +1019,10 @@ virDomainRestore(virConnectPtr conn, const char *from) * @flags will override the default read from the file. These two * flags are mutually exclusive. * + * If @flags includes VIR_DOMAIN_SAVE_RESET_NVRAM, then libvirt will + * discard any existing NVRAM file and re-initialize NVRAM from the + * pristine template. + * * Returns 0 in case of success and -1 in case of failure. */ int @@ -6763,6 +6771,10 @@ virDomainCreate(virDomainPtr domain) * If the VIR_DOMAIN_START_FORCE_BOOT flag is set, then any managed save * file for this domain is discarded, and the domain boots from scratch. * + * If @flags includes VIR_DOMAIN_START_RESET_NVRAM, then libvirt will + * discard any existing NVRAM file and re-initialize NVRAM from the + * pristine template. + * * Returns 0 in case of success, -1 in case of error */ int @@ -6835,6 +6847,10 @@ virDomainCreateWithFlags(virDomainPtr domain, unsigned int flags) * If the VIR_DOMAIN_START_FORCE_BOOT flag is set, then any managed save * file for this domain is discarded, and the domain boots from scratch. * + * If @flags includes VIR_DOMAIN_START_RESET_NVRAM, then libvirt will + * discard any existing NVRAM file and re-initialize NVRAM from the + * pristine template. + * * Returns 0 in case of success, -1 in case of error */ int