From 69c0ff3e608d3f6378d0a609da21e6a4cc1f43b1 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Wed, 21 Apr 2021 15:49:38 +0200 Subject: [PATCH] ceph: pool set: improve handling "size" parameter instead of fully duplicating the code just order it first if it exists... Signed-off-by: Thomas Lamprecht --- PVE/Ceph/Tools.pm | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/PVE/Ceph/Tools.pm b/PVE/Ceph/Tools.pm index 9d4d595f..c6aa7d9b 100644 --- a/PVE/Ceph/Tools.pm +++ b/PVE/Ceph/Tools.pm @@ -228,21 +228,13 @@ my $set_pool_setting = sub { sub set_pool { my ($pool, $param) = @_; - # by default, pool size always sets min_size, - # set it and forget it, as first item + # by default, pool size always resets min_size, so set it as first item # https://tracker.ceph.com/issues/44862 - if ($param->{size}) { - my $value = $param->{size}; - if (my $err = $set_pool_setting->($pool, 'size', $value)) { - print "$err"; - } else { - delete $param->{size}; - } - } + my $keys = [ grep { $_ ne 'size' } sort keys %$param ]; + unshift @$keys, 'size' if exists $param->{size}; - foreach my $setting (keys %$param) { + for my $setting (@$keys) { my $value = $param->{$setting}; - next if $setting eq 'size'; if (my $err = $set_pool_setting->($pool, $setting, $value)) { print "$err";