[pve-devel] [PATCH storage] Addition to fix #1895, use feature array directly

Thomas Lamprecht t.lamprecht at proxmox.com
Thu Sep 6 08:50:30 CEST 2018


On 9/5/18 6:12 PM, Alwin Antreich wrote:
> The rbd_volume_info can return the feature array directly, no need for keeping
> the conversion into a string.
> 
> Signed-off-by: Alwin Antreich <a.antreich at proxmox.com>
> ---
> Cloning on a krbd enabled storage broke with the fix #1895, this patch made it
> work on my cluster.
> 
>  PVE/Storage/RBDPlugin.pm | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/PVE/Storage/RBDPlugin.pm b/PVE/Storage/RBDPlugin.pm
> index 9536531..a069273 100644
> --- a/PVE/Storage/RBDPlugin.pm
> +++ b/PVE/Storage/RBDPlugin.pm
> @@ -10,6 +10,7 @@ use PVE::JSONSchema qw(get_standard_option);
>  use PVE::RADOS;
>  use PVE::Storage::CephTools;
>  use JSON;
> +use Data::Dumper;

please don't introduce 'Data::Dumper' usages if not really needed,
just left-over debug code, I'd guess ;)


else looks OK, as rbd_volume_info gets only used here in this module,
and features gets only used by the $krbd_feature_disable sub.

>  >  use base qw(PVE::Storage::Plugin);
>  
> @@ -83,7 +84,7 @@ my $krbd_feature_disable = sub {
>      my $krbd_feature_blacklist = ['deep-flatten', 'fast-diff', 'object-map', 'exclusive-lock'];
>      my (undef, undef, undef, undef, $features) = rbd_volume_info($scfg, $storeid, $name);
>  
> -    my $active_features = { map { $_ => 1 } PVE::Tools::split_list($features)};
> +    my $active_features = { map { $_ => 1 } @$features };
>      my $incompatible_features = join(',', grep { %$active_features{$_} } @$krbd_feature_blacklist);
>  
>      if ($incompatible_features) {
> @@ -221,15 +222,13 @@ sub rbd_volume_info {
>      my $r = JSON::decode_json($raw);
>      $size = $r->{size};
>      $format = $r->{format};
> +    $features = $r->{features};
>      if ($r->{parent}) {
>  	$parent = $r->{parent}->{image}.'@'.$r->{parent}->{snapshot};
>      }
>      if ($r->{protected}) {
>  	$protected = 1 if $r->{protected} eq "true";
>      }
> -    if ($r->{features}) {
> -	$features = join (', ', $r->{features});
> -    }
>  
>      return ($size, $parent, $format, $protected, $features);
>  }
> 





More information about the pve-devel mailing list