[pve-devel] [qemu-server] fix #1829 check cloud-init disk format.
Thomas Lamprecht
t.lamprecht at proxmox.com
Thu Jul 12 09:45:42 CEST 2018
On 7/11/18 12:06 PM, Wolfgang Bumiller wrote:
> On Tue, Jul 03, 2018 at 05:05:54PM +0200, Wolfgang Link wrote:
>> Directory storage support raw and qcow2 format.
>> It is not good to implicitly set the cloud-init format
>> and ignore the selected format.
>>
>> Signed-off-by: Wolfgang Link <w.link at proxmox.com>
>> ---
>> PVE/API2/Qemu.pm | 10 ++++++----
>> 1 file changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
>> index c15c71f..26ace09 100644
>> --- a/PVE/API2/Qemu.pm
>> +++ b/PVE/API2/Qemu.pm
>> @@ -149,12 +149,14 @@ my $create_disks = sub {
>> die "no storage ID specified (and no default storage)\n" if !$storeid;
>> my $scfg = PVE::Storage::storage_config($storecfg, $storeid);
>> my $name = "vm-$vmid-cloudinit";
>> - my $fmt = undef;
>> + my $fmt = $disk->{format};
>> if ($scfg->{path}) {
>> - $name .= ".qcow2";
>> - $fmt = 'qcow2';
>> + die "Format \"$fmt\" is not supported\n"
>> + if $fmt !~ m/[raw|qcow2]/;
>
> Wrong regex.
>
> IIRC we said that we eg. don't want vmdk here, so that's why you're
> doing this, but I find this is unnecessary work... Can we just skip the
> check?
>
>> + $name .= ".$fmt";
>
> BTW. @Thomas, @Dietmar:
> Why do we even need to add the extension? This is a storage-dependent
> thing, vdisk_alloc() currently actually verifies that the extension is
> there for storages which need it, but instead, it could just add it,
> because here we need to needlessly distinguish between storage types for
> a function which returns the actually allocated volid anyway.
>
> We could make the extension optional and simplify code like this...
> => QemuConfig.pm
> > $name .= ".raw" if $scfg->{path}; # add filename extension for file base storage
> => API2/Storage/Content.pm
> `create` takes a 'format' option and a filename, and verifies that
> the extension matches the option if both exist.
> (Weirdly the parameter is called `filename` actually...)
> => QemuServer.pm
> clone_disk has a cloud-init case where it appends .qcow2 (which btw.
> I think will fail with .raw as well currently...)
>
That sounds good to me, the pass format and name, then extract format from
name and check if they're the same seems really a bit weird.
>
>> }else{
>> - $fmt = 'raw';
>> + die "Format \"$fmt\" is not supported\n"
>> + if $fmt eq 'raw';
>> }
>> # FIXME: Reasonable size? qcow2 shouldn't grow if the space isn't used anyway?
>> my $cloudinit_iso_size = 5; # in MB
>> --
>> 2.11.0
More information about the pve-devel
mailing list