Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> --- 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