all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH qemu-server] fix #6713: snapshot volume chain: fix snapshot after disk move with zeroinit
@ 2025-09-19 12:08 Fiona Ebner
  2025-09-19 13:38 ` Aaron Lauterer
  2025-09-22 17:28 ` [pve-devel] applied: " Thomas Lamprecht
  0 siblings, 2 replies; 3+ messages in thread
From: Fiona Ebner @ 2025-09-19 12:08 UTC (permalink / raw)
  To: pve-devel

After mirror, the node below throttle might not be the format node,
but can also be a zeroinit node. In particular, this is the node that
needs to be used by when replacing the blockdev for volume-chain
snapshots for the 'current' snapshot. Look up the actually inserted
node below throttle, rather than assuming that it's the format node.

Also removes the $src_file_blockdev_name variable that has been unused
since commit e7cf7c00 ("blockdev: delete/replace: re-use detach()
helper").

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
 src/PVE/QemuServer/Blockdev.pm | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/PVE/QemuServer/Blockdev.pm b/src/PVE/QemuServer/Blockdev.pm
index d4062148..8e6749e8 100644
--- a/src/PVE/QemuServer/Blockdev.pm
+++ b/src/PVE/QemuServer/Blockdev.pm
@@ -924,9 +924,15 @@ sub blockdev_replace {
     my $volid = $drive->{file};
     my $drive_id = PVE::QemuServer::Drive::get_drive_id($drive);
 
-    my $src_name_options = $src_snap eq 'current' ? {} : { 'snapshot-name' => $src_snap };
-    my $src_file_blockdev_name = get_node_name('file', $drive_id, $volid, $src_name_options);
-    my $src_fmt_blockdev_name = get_node_name('fmt', $drive_id, $volid, $src_name_options);
+    my $src_name_options = {};
+    my $src_blockdev_name;
+    if ($src_snap eq 'current') {
+        # there might be other nodes on top like zeroinit, look up the current node below throttle
+        $src_blockdev_name = get_node_name_below_throttle($vmid, $deviceid, 1);
+    } else {
+        $src_name_options = { 'snapshot-name' => $src_snap };
+        $src_blockdev_name = get_node_name('fmt', $drive_id, $volid, $src_name_options);
+    }
 
     my $target_file_blockdev = generate_file_blockdev(
         $storecfg,
@@ -989,7 +995,7 @@ sub blockdev_replace {
     }
 
     # delete old file|fmt nodes
-    eval { detach($vmid, $src_fmt_blockdev_name); };
+    eval { detach($vmid, $src_blockdev_name); };
     warn "detaching block node for $src_snap failed - $@" if $@;
 }
 
-- 
2.47.3



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-09-22 17:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-19 12:08 [pve-devel] [PATCH qemu-server] fix #6713: snapshot volume chain: fix snapshot after disk move with zeroinit Fiona Ebner
2025-09-19 13:38 ` Aaron Lauterer
2025-09-22 17:28 ` [pve-devel] applied: " Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal