[pve-devel] [PATCH qemu-server v4 1/3] Refactor the resolution of target disk format in own sub

Fabian Grünbichler f.gruenbichler at proxmox.com
Fri May 12 13:52:35 CEST 2017


just a plain refactoring - LGTM, although the name sounds a bit
contrived (maybe dest or target instead of dst?)

On Tue, May 09, 2017 at 04:26:04PM +0200, Emmanuel Kasper wrote:
> This will allow use to reuse the code in ImportDisk.pm.
> ---
>  PVE/QemuServer.pm | 27 ++++++++++++++++-----------
>  1 file changed, 16 insertions(+), 11 deletions(-)
> 
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> index 2fb419d..8ea411a 100644
> --- a/PVE/QemuServer.pm
> +++ b/PVE/QemuServer.pm
> @@ -6146,20 +6146,11 @@ sub clone_disk {
>  	my ($storeid, $volname) = PVE::Storage::parse_volume_id($drive->{file});
>  	$storeid = $storage if $storage;
>  
> -	my ($defFormat, $validFormats) = PVE::Storage::storage_default_format($storecfg, $storeid);
> -	if (!$format) {
> -	    my $scfg = PVE::Storage::storage_config($storecfg, $storeid);
> -	    $format = qemu_img_format($scfg, $volname);
> -	}
> -
> -	# test if requested format is supported - else use default
> -	my $supported = grep { $_ eq $format } @$validFormats;
> -	$format = $defFormat if !$supported;
> -
> +	my $dst_format = choose_dst_disk_format($storecfg, $storeid, $volname, $format);
>  	my ($size) = PVE::Storage::volume_size_info($storecfg, $drive->{file}, 3);
>  
>  	print "create full clone of drive $drivename ($drive->{file})\n";
> -	$newvolid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $newvmid, $format, undef, ($size/1024));
> +	$newvolid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $newvmid, $dst_format, undef, ($size/1024));
>  	push @$newvollist, $newvolid;
>  
>  	PVE::Storage::activate_volumes($storecfg, [$newvolid]);
> @@ -6365,6 +6356,20 @@ sub windows_version {
>      return $winversion;
>  }
>  
> +sub choose_dst_disk_format {
> +	my ($storecfg, $storeid, $src_volname, $format) = @_;
> +	my ($defFormat, $validFormats) = PVE::Storage::storage_default_format($storecfg, $storeid);
> +	if (!$format && $src_volname) {
> +	    # if no target format is specified, use the source disk format as hint
> +	    my $scfg = PVE::Storage::storage_config($storecfg, $storeid);
> +	    $format = qemu_img_format($scfg, $src_volname);
> +	}
> +	# test if requested format is supported - else use default
> +	my $supported = grep { $_ eq $format } @$validFormats;
> +	$format = $defFormat if !$supported;
> +	return $format;
> +}
> +
>  # bash completion helper
>  
>  sub complete_backup_archives {
> -- 
> 2.11.0
> 
> 
> _______________________________________________
> 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