[pve-devel] [PATCH storage 2/2] rbd: volume resize: avoid passing floating point value to rbd

Fiona Ebner f.ebner at proxmox.com
Fri Apr 28 14:32:09 CEST 2023

which causes an error "the argument for option '--size' is invalid".
Just round up to the nearest integer to have at least the requested
size. This is similar to what is done for ZFS with d3e3e5d ("When
resizing a ZFS volume, align size to 1M") and makes commands like 'qm
resize 102 scsi1 +0.01G' work.

Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
 PVE/Storage/RBDPlugin.pm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/PVE/Storage/RBDPlugin.pm b/PVE/Storage/RBDPlugin.pm
index 9d59a14..c9e70a2 100644
--- a/PVE/Storage/RBDPlugin.pm
+++ b/PVE/Storage/RBDPlugin.pm
@@ -7,6 +7,7 @@ use Cwd qw(abs_path);
 use IO::File;
 use JSON;
 use Net::IP;
+use POSIX qw(ceil);
 use PVE::CephConfig;
 use PVE::Cluster qw(cfs_read_file);;
@@ -779,7 +780,7 @@ sub volume_resize {
     my ($vtype, $name, $vmid) = $class->parse_volname($volname);
-    my $cmd = $rbd_cmd->($scfg, $storeid, 'resize', '--size', ($size/1024/1024), $name);
+    my $cmd = $rbd_cmd->($scfg, $storeid, 'resize', '--size', ceil($size/1024/1024), $name);
     run_rbd_command($cmd, errmsg => "rbd resize '$volname' error");
     return undef;

More information about the pve-devel mailing list