update_lxc_config($vmid, $conf);
- local $ENV{PVE_SKIPLOCK}=1 if $skiplock;
+ my $skiplock_flag_fn = "/run/lxc/skiplock-$vmid";
+
+ if ($skiplock) {
+ open(my $fh, '>', $skiplock_flag_fn) || die "failed to open $skiplock_flag_fn for writing: $!\n";
+ close($fh);
+ }
my $cmd = ['systemctl', 'start', "pve-container\@$vmid"];
- PVE::Tools::run_command($cmd);
+ eval { PVE::Tools::run_command($cmd); };
+ if (my $err = $@) {
+ unlink $skiplock_flag_fn;
+ die $err if $err;
+ }
return;
}
return undef if $param->{name} !~ m/^\d+$/;
my $vmid = $param->{name};
+ my $skiplock_flag_fn = "/run/lxc/skiplock-$vmid";
+ my $skiplock = 1 if -e $skiplock_flag_fn;
+ unlink $skiplock_flag_fn if $skiplock;
PVE::Cluster::check_cfs_quorum(); # only start if we have quorum
return undef if ! -f PVE::LXC::Config->config_file($vmid);
my $conf = PVE::LXC::Config->load_config($vmid);
- if (!$ENV{PVE_SKIPLOCK} && !PVE::LXC::Config->has_lock($conf, 'mounted')) {
+ if (!$skiplock && !PVE::LXC::Config->has_lock($conf, 'mounted')) {
PVE::LXC::Config->check_lock($conf);
}