diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 16d02ab1..189366a7 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -4409,7 +4409,7 @@ sub snapshot_delete { lock_config($vmid, $updatefn); } -sub has_feature{ +sub has_feature { my ($feature, $conf, $storecfg, $snapname, $running) = @_; my $err = undef; @@ -4433,6 +4433,20 @@ sub template_create { my $storecfg = PVE::Storage::config(); my $i = 0; + # First check if all disks have feature 'clone'. + # Note: there is no feature 'create_base', but we can safely assume + # that a storage with feature 'clone' can create base images. + foreach_drive($conf, sub { + my ($ds, $drive) = @_; + + return if drive_is_cdrom($drive); + return if $disk && $ds ne $disk; + + my $volid = $drive->{file}; + die "volume '$volid' does not support template/clone\n" + if !PVE::Storage::volume_has_feature($storecfg, 'clone', $volid); + }); + foreach_drive($conf, sub { my ($ds, $drive) = @_;