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

Fabian Ebner f.ebner at proxmox.com
Thu Nov 21 08:53:00 CET 2019


On 11/20/19 11:35 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 form the associated guest (qemu/lxc) and we now ignore 'rootdir'
> if both types are enabled. 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 in v2:
> * duplicate filtering is now based on actual content type of the volumes
> * if a volume is not classifiable, it will not show up anymore
> 

Luckily I'm playing around with iSCSI at the moment and I noticed that 
with an 'iscsi' storage we use 'content images' for LUNs as well. And 
since LUNs have no associated 'vmtype' they will be non-classifiable and 
not show up anymore. Maybe we need to just set 'rootdir' for containers 
and 'images' for everything else?

>   PVE/Storage/Plugin.pm | 21 +++++++++++++++++++--
>   1 file changed, 19 insertions(+), 2 deletions(-)
> 
> diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
> index 88da231..2bf6f0a 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,24 @@ 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};
> +		next if (!defined($vmtype));
> +		if ($vmtype eq 'lxc') {
> +		    $item->{content} = 'rootdir';
> +		}
> +		if ($vmtype eq 'qemu') {
> +		    $item->{content} = 'images';
> +		}
> +		if (!($ct eq $item->{content})) {
> +		    next;
> +		}
> +
> +	    } else {
> +		$item->{content} = $ct;
> +	    }
> +
>   	    push @$res, $item;
>   	}
>       }
> --
> 2.20.1
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 




More information about the pve-devel mailing list