rxbounce can be needed to avoid "bad crc/signature" errors when running Windows VM disks on KRBD. When mapping a volume, check the guest-ostype hint, and if it denotes the volume is mapped as part of a Windows VM, pass rxbounce.
Signed-off-by: Friedrich Weber <[email protected]> --- src/PVE/Storage/RBDPlugin.pm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/PVE/Storage/RBDPlugin.pm b/src/PVE/Storage/RBDPlugin.pm index cf371c7..54c5a57 100644 --- a/src/PVE/Storage/RBDPlugin.pm +++ b/src/PVE/Storage/RBDPlugin.pm @@ -793,7 +793,7 @@ sub deactivate_storage { } sub map_volume { - my ($class, $storeid, $scfg, $volname, $snapname) = @_; + my ($class, $storeid, $scfg, $volname, $snapname, $hints) = @_; my ($vtype, $img_name, $vmid) = $class->parse_volname($volname); @@ -807,7 +807,12 @@ sub map_volume { # features can only be enabled/disabled for image, not for snapshot! $krbd_feature_update->($scfg, $storeid, $img_name); - my $cmd = $rbd_cmd->($scfg, $storeid, 'map', $name); + my @options = (); + if (defined($hints->{'guest-ostype'}) && $hints->{'guest-ostype'} =~ /^w/) { + @options = ('--options', 'rxbounce'); + } + + my $cmd = $rbd_cmd->($scfg, $storeid, 'map', $name, @options); run_rbd_command($cmd, errmsg => "can't map rbd volume $name"); return $kerneldev; @@ -830,9 +835,9 @@ sub unmap_volume { } sub activate_volume { - my ($class, $storeid, $scfg, $volname, $snapname, $cache) = @_; + my ($class, $storeid, $scfg, $volname, $snapname, $cache, $hints) = @_; - $class->map_volume($storeid, $scfg, $volname, $snapname) if $scfg->{krbd}; + $class->map_volume($storeid, $scfg, $volname, $snapname, $hints) if $scfg->{krbd}; return 1; } -- 2.47.3 _______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
