[PATCH qemu-server 08/13] blockdev: add support for nbd_export: block-export-add

Alexandre Derumier alexandre.derumier at groupe-cyllene.com
Tue Jun 3 09:55:51 CEST 2025


simply use the "drive-$id" top node

Signed-off-by: Alexandre Derumier <alexandre.derumier at groupe-cyllene.com>
---
 PVE/QemuServer.pm | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 04e71fb6..8e48f52b 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -6010,20 +6010,27 @@ sub vm_start_nolock {
 	    $migrate_storage_uri = "nbd:${localip}:${storage_migrate_port}";
 	}
 
-	my $block_info = mon_cmd($vmid, "query-block");
-	$block_info = { map { $_->{device} => $_ } $block_info->@* };
+	my $block_info = {};
+	my $use_blockdev = undef;
+
+	if (PVE::QemuServer::Machine::is_machine_version_at_least($forcemachine, 10, 0)) {
+	    $use_blockdev = 1;
+	} else {
+	    my $block_info = mon_cmd($vmid, "query-block");
+	    $block_info = { map { $_->{device} => $_ } $block_info->@* };
+	}
 
 	foreach my $opt (sort keys %$nbd) {
 	    my $drivestr = $nbd->{$opt}->{drivestr};
 	    my $volid = $nbd->{$opt}->{volid};
 
-	    my $block_node = $block_info->{"drive-$opt"}->{inserted}->{'node-name'};
+	    my $nodename = $use_blockdev ? "drive-$opt" : $block_info->{"drive-$opt"}->{inserted}->{'node-name'};
 
 	    mon_cmd(
 		$vmid,
 		"block-export-add",
 		id => "drive-$opt",
-		'node-name' => $block_node,
+		'node-name' => $nodename,
 		writable => JSON::true,
 		type => "nbd",
 		name => "drive-$opt", # NBD export name
-- 
2.39.5




More information about the pve-devel mailing list