Signed-off-by: Jonathon Jongsma <[email protected]>
---
src/hyperv/hyperv_driver.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c
index dd1248ced1..d3e17d7a16 100644
--- a/src/hyperv/hyperv_driver.c
+++ b/src/hyperv/hyperv_driver.c
@@ -4321,6 +4321,31 @@ hypervDomainSnapshotGetXMLDesc(virDomainSnapshotPtr
snapshot,
}
+static virDomainSnapshotPtr
+hypervDomainSnapshotGetParent(virDomainSnapshotPtr snapshot,
+ unsigned int flags)
+{
+ g_autoptr(Msvm_VirtualSystemSettingData) vssd = NULL;
+ g_autofree char* parent_id = NULL;
+
+ virCheckFlags(0, NULL);
+
+ vssd = hypervDomainLookupSnapshotSD(snapshot->domain, snapshot->name);
+ if (!vssd)
+ return NULL;
+
+ parent_id = hypervParseInstanceIdFromParentPath(vssd->data->Parent);
+ if (!parent_id) {
+ virReportError(VIR_ERR_NO_DOMAIN_SNAPSHOT,
+ _("snapshot '%1$s' does not have a parent"),
+ snapshot->name);
+ return NULL;
+ }
+
+ return virGetDomainSnapshot(snapshot->domain, parent_id);
+}
+
+
static virHypervisorDriver hypervHypervisorDriver = {
.name = "Hyper-V",
.connectOpen = hypervConnectOpen, /* 0.9.5 */
@@ -4393,6 +4418,7 @@ static virHypervisorDriver hypervHypervisorDriver = {
.domainSnapshotGetXMLDesc = hypervDomainSnapshotGetXMLDesc, /* 12.2.0 */
.domainHasCurrentSnapshot = hypervDomainHasCurrentSnapshot, /* 12.2.0 */
.domainSnapshotCurrent = hypervDomainSnapshotCurrent, /* 12.2.0 */
+ .domainSnapshotGetParent = hypervDomainSnapshotGetParent, /* 12.2.0 */
};
--
2.53.0