[pve-devel] applied: [PATCH v3 storage 1/3] fix #2467 remove duplicate volumes & tag with correct content type

Thomas Lamprecht t.lamprecht at proxmox.com
Thu Nov 21 12:49:47 CET 2019


On 11/21/19 11:43 AM, Tim Marx wrote:
> The bugfix for #2317 introduced a kind of odd api behavior, where each volume
> was returned twice from our api if a storage has both 'rootdir' & 'images' content
> types enabled. To give the content type of the volume an actual meaning, it is
> now inferred from the associated guest, if there's no guest or we don't
> have an owner for that volume we default to 'images'.
> 
> At the volume level, there is no option to list volumes
> based on content types, since the volumes do not know what type they are actually
> used for.
> 
> Signed-off-by: Tim Marx <t.marx at proxmox.com>
> ---
> 
> changed v3:
> * adapted commit message
> * default to images for all volumes except if there's a lxc container with that id
> 

applied, with a followup...

>  PVE/Storage/Plugin.pm | 19 +++++++++++++++++--
>  1 file changed, 17 insertions(+), 2 deletions(-)
> 
> diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
> index 88da231..2573cb7 100644
> --- a/PVE/Storage/Plugin.pm
> +++ b/PVE/Storage/Plugin.pm
> @@ -937,7 +937,7 @@ sub list_volumes {
>      my ($class, $storeid, $scfg, $vmid, $content_types) = @_;
> 
>      my $res = [];
> -
> +    my $vmlist = PVE::Cluster::get_vmlist();
>      foreach my $ct (@$content_types) {
>  	my $data;
> 
> @@ -960,7 +960,22 @@ sub list_volumes {
>  	next if !$data;
> 
>  	foreach my $item (@$data) {
> -	    $item->{content} = $ct;
> +	    if ($ct eq 'images' || $ct eq 'rootdir') {
> +
> +		my $vmtype = $vmlist->{ids}->{$item->{vmid}}->{type};
> +		if (defined($vmtype) && $vmtype eq 'lxc') {
> +		    $item->{content} = 'rootdir';
> +		} else {
> +		    $item->{content} = 'images';
> +		}
> +		if (!($ct eq $item->{content})) {
> +		    next;
> +		}

...just used:
next if $type ne $item->{content};

as perl has a not-equal, it's not required to negate the eq ;)




More information about the pve-devel mailing list