[pve-devel] [PATCH qemu-server] blockdev: add NBD: fix handling of IPv6 host to unbreak TCP disk live migration
Fiona Ebner
f.ebner at proxmox.com
Mon Nov 24 13:21:51 CET 2025
As reported in the community forum [0], live disk migration using
migration type 'insecure' would fail when the target is an IPv6 host.
When passing the IPv6 address to QMP, the surrounding square brackets
need to be removed first.
[0]: https://forum.proxmox.com/threads/176727/
Fixes: 3fee3186 ("blockdev: add support for NBD paths")
Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---
src/PVE/QemuServer/Blockdev.pm | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/PVE/QemuServer/Blockdev.pm b/src/PVE/QemuServer/Blockdev.pm
index 26e9c383..af7e769b 100644
--- a/src/PVE/QemuServer/Blockdev.pm
+++ b/src/PVE/QemuServer/Blockdev.pm
@@ -274,8 +274,13 @@ my sub generate_file_blockdev {
my $server = { type => 'unix', path => "$1" };
$blockdev = { driver => 'nbd', server => $server, export => "$2" };
} elsif ($drive->{file} =~ m/^$NBD_TCP_PATH_RE_3$/) {
- my $server = { type => 'inet', host => "$1", port => "$2" }; # port is also a string in QAPI
- $blockdev = { driver => 'nbd', server => $server, export => "$3" };
+ my ($host, $port, $export) = ($1, $2, $3);
+ if ($host =~ m/^\[(.*)\]$/) { # IPv6 address needs to be passed without square brackets
+ $host = $1;
+ }
+ # port is also a string in QAPI
+ my $server = { type => 'inet', host => "$host", port => "$port" };
+ $blockdev = { driver => 'nbd', server => $server, export => "$export" };
} elsif ($drive->{file} eq 'cdrom') {
my $path = PVE::QemuServer::Drive::get_iso_path($storecfg, $drive->{file});
$blockdev = { driver => 'host_cdrom', filename => "$path" };
--
2.47.3
More information about the pve-devel
mailing list