[pve-devel] [PATCH qemu-server v2 2/3] Add skiplock to do_import

Dominic Jäger d.jaeger at proxmox.com
Mon Oct 28 12:47:33 CET 2019


Functions like qm importovf can now set the "lock" property in a config file
before calling do_import.

Signed-off-by: Dominic Jäger <d.jaeger at proxmox.com>
---
v1->v2: Edited only the commit message ("parameter lock" -> "lock property")

 PVE/CLI/qm.pm                | 4 ++--
 PVE/QemuServer/ImportDisk.pm | 6 ++++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/PVE/CLI/qm.pm b/PVE/CLI/qm.pm
index acafdc0..3bf5f97 100755
--- a/PVE/CLI/qm.pm
+++ b/PVE/CLI/qm.pm
@@ -488,7 +488,7 @@ __PACKAGE__->register_method ({
 	die "storage $storeid does not support vm images\n"
 	    if !$target_storage_config->{content}->{images};
 
-	PVE::QemuServer::ImportDisk::do_import($source, $vmid, $storeid, { format => $format });
+	PVE::QemuServer::ImportDisk::do_import($source, $vmid, $storeid, 0, { format => $format });
 
 	return undef;
     }});
@@ -640,7 +640,7 @@ __PACKAGE__->register_method ({
 		foreach my $disk (@{ $parsed->{disks} }) {
 		    my ($file, $drive) = ($disk->{backing_file}, $disk->{disk_address});
 		    PVE::QemuServer::ImportDisk::do_import($file, $vmid, $storeid,
-			{ drive_name => $drive, format => $format });
+			0, { drive_name => $drive, format => $format });
 		}
 
 		# reload after disks entries have been created
diff --git a/PVE/QemuServer/ImportDisk.pm b/PVE/QemuServer/ImportDisk.pm
index 5d391e6..9cae461 100755
--- a/PVE/QemuServer/ImportDisk.pm
+++ b/PVE/QemuServer/ImportDisk.pm
@@ -12,7 +12,7 @@ use PVE::Tools qw(run_command extract_param);
 # $optional->{drive_name} may be used to specify ide0, scsi1, etc ...
 # $optional->{format} may be used to specify qcow2, raw, etc ...
 sub do_import {
-    my ($src_path, $vmid, $storage_id, $optional) = @_;
+    my ($src_path, $vmid, $storage_id, $skiplock, $optional) = @_;
 
     my $drive_name = extract_param($optional, 'drive_name');
     my $format = extract_param($optional, 'format');
@@ -41,7 +41,9 @@ sub do_import {
 
     my $create_drive = sub {
 	my $vm_conf = PVE::QemuConfig->load_config($vmid);
-	PVE::QemuConfig->check_lock($vm_conf);
+	if (!$skiplock) {
+	    PVE::QemuConfig->check_lock($vm_conf);
+	}
 
 	if ($drive_name) {
 		# should never happen as setting $drive_name is not exposed to public interface
-- 
2.20.1




More information about the pve-devel mailing list