Skip to content

Commit c9d2138

Browse files
authored
Merge pull request #2537 from SimonFair/fix(VM_Manager)-snap-GPF-fix
fix(VM_Manager): fix gpf issues with snapshots and php 8.4
2 parents a2d4af1 + 6499fc9 commit c9d2138

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

emhttp/plugins/dynamix.vm.manager/include/libvirt_helpers.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1886,7 +1886,11 @@ function write_snapshots_database($vm,$name,$state,$desc,$method="QEMU") {
18861886
$noxml = "";
18871887
$snaps_json = file_get_contents($dbpath."/snapshots.db");
18881888
$snaps = json_decode($snaps_json,true);
1889-
$snapshot_res=$lv->domain_snapshot_lookup_by_name($vm,$name);
1889+
$snapshot_xml = @file_get_contents("/etc/libvirt/qemu/snapshot/{$vm}/{$name}.xml");
1890+
if (empty($snapshot_xml)) {
1891+
$snapshot_xml = trim(shell_exec("virsh snapshot-dumpxml ".escapeshellarg($vm)." ".escapeshellarg($name)." 2>/dev/null"));
1892+
}
1893+
$snapshot_res = !empty($snapshot_xml);
18901894
if (!$snapshot_res) {
18911895
# Manual Snap no XML
18921896
if ($state == "shutoff" && ($method == "ZFS" || $method == "BTRFS")) {
@@ -1903,7 +1907,7 @@ function write_snapshots_database($vm,$name,$state,$desc,$method="QEMU") {
19031907
$noxml = "noxml";
19041908
}
19051909
} else {
1906-
$snapshot_xml=$lv->domain_snapshot_get_xml($snapshot_res);
1910+
19071911
$a = simplexml_load_string($snapshot_xml);
19081912
$a = json_encode($a);
19091913
$b = json_decode($a, TRUE);
@@ -2133,7 +2137,9 @@ function vm_snapshot($vm,$snapshotname, $snapshotdescinput, $free = "yes", $meth
21332137
if ($logging) qemu_log($vm,"Success write snap db");
21342138
$ret = write_snapshots_database("$vm","$name",$state,$snapshotdescinput,$method);
21352139
#remove meta data
2136-
if ($ret != "noxml") $ret = $lv->domain_snapshot_delete($vm, "$name" ,2);
2140+
if ($ret != "noxml") {
2141+
exec("virsh snapshot-delete ".escapeshellarg($vm)." ".escapeshellarg($name)." --metadata 2>&1", $snapDelOut, $snapDelRtn);
2142+
}
21372143
}
21382144
return $arrResponse;
21392145

0 commit comments

Comments
 (0)