die "you can't start a CT if it's a template\n"
if PVE::LXC::is_template($conf);
- PVE::LXC::check_lock($conf) if !$skiplock;
+ if (!$skiplock && !PVE::LXC::has_lock($conf, 'mounted')) {
+ PVE::LXC::check_lock($conf);
+ }
my $storage_cfg = cfs_read_file("storage.cfg");
my $conf = PVE::LXC::load_config($vmid);
- PVE::LXC::check_lock($conf) if !$skiplock;
+ if (!$skiplock && !PVE::LXC::has_lock($conf, 'mounted')) {
+ PVE::LXC::check_lock($conf);
+ }
my $cmd = ['lxc-stop', '-n', $vmid, '--kill'];
die "VM is locked ($conf->{'lock'})\n" if $conf->{'lock'};
}
+sub has_lock {
+ my ($conf, $lock) = @_;
+ return $conf->{lock} && (!defined($lock) || $lock eq $conf->{lock});
+}
+
sub check_protection {
my ($vm_conf, $err_msg) = @_;
return undef if ! -f PVE::LXC::config_file($vmid);
my $conf = PVE::LXC::load_config($vmid);
- PVE::LXC::check_lock($conf) if !$ENV{PVE_SKIPLOCK};
+ if (!$ENV{PVE_SKIPLOCK} && !PVE::LXC::has_lock($conf, 'mounted')) {
+ PVE::LXC::check_lock($conf);
+ }
my $storage_cfg = PVE::Storage::config();