my $realcmd = sub {
my $upid = shift;
- syslog('info', "starting CT $vmid: $upid\n");
+ PVE::LXC::Config->lock_config($vmid, sub {
+ syslog('info', "starting CT $vmid: $upid\n");
- my $conf = PVE::LXC::Config->load_config($vmid);
-
- die "you can't start a CT if it's a template\n"
- if PVE::LXC::Config->is_template($conf);
+ my $conf = PVE::LXC::Config->load_config($vmid);
- if (!$skiplock && !PVE::LXC::Config->has_lock($conf, 'mounted')) {
- PVE::LXC::Config->check_lock($conf);
- }
+ die "you can't start a CT if it's a template\n"
+ if PVE::LXC::Config->is_template($conf);
- if ($conf->{unprivileged}) {
- PVE::LXC::Config->foreach_volume($conf, sub {
- my ($ms, $mountpoint) = @_;
- die "Quotas are not supported by unprivileged containers.\n" if $mountpoint->{quota};
- });
- }
+ if (!$skiplock && !PVE::LXC::Config->has_lock($conf, 'mounted')) {
+ PVE::LXC::Config->check_lock($conf);
+ }
- PVE::LXC::vm_start($vmid, $conf, $skiplock, $param->{debug});
- };
+ if ($conf->{unprivileged}) {
+ PVE::LXC::Config->foreach_volume($conf, sub {
+ my ($ms, $mountpoint) = @_;
+ die "Quotas are not supported by unprivileged containers.\n"
+ if $mountpoint->{quota};
+ });
+ }
- my $lockcmd = sub {
- return $rpcenv->fork_worker('vzstart', $vmid, $authuser, $realcmd);
+ PVE::LXC::vm_start($vmid, $conf, $skiplock, $param->{debug});
+ });
};
- return PVE::LXC::Config->lock_config($vmid, $lockcmd);
+ return $rpcenv->fork_worker('vzstart', $vmid, $authuser, $realcmd);
}
}});
my $realcmd = sub {
my $upid = shift;
- syslog('info', "stopping CT $vmid: $upid\n");
+ PVE::LXC::Config->lock_config($vmid, sub {
+ syslog('info', "stopping CT $vmid: $upid\n");
- my $conf = PVE::LXC::Config->load_config($vmid);
- if (!$skiplock && !PVE::LXC::Config->has_lock($conf, 'mounted')) {
- PVE::LXC::Config->check_lock($conf);
- }
+ my $conf = PVE::LXC::Config->load_config($vmid);
+ if (!$skiplock && !PVE::LXC::Config->has_lock($conf, 'mounted')) {
+ PVE::LXC::Config->check_lock($conf);
+ }
- PVE::LXC::vm_stop($vmid, 1);
+ PVE::LXC::vm_stop($vmid, 1);
+ });
};
- my $lockcmd = sub {
- return $rpcenv->fork_worker('vzstop', $vmid, $authuser, $realcmd);
- };
-
- return PVE::LXC::Config->lock_config($vmid, $lockcmd);
+ return $rpcenv->fork_worker('vzstop', $vmid, $authuser, $realcmd);
}
}});
my $realcmd = sub {
my $upid = shift;
- syslog('info', "shutdown CT $vmid: $upid\n");
-
- my $conf = PVE::LXC::Config->load_config($vmid);
- PVE::LXC::Config->check_lock($conf);
+ PVE::LXC::Config->lock_config($vmid, sub {
+ syslog('info', "shutdown CT $vmid: $upid\n");
- PVE::LXC::vm_stop($vmid, 0, $timeout, $param->{forceStop});
- };
+ my $conf = PVE::LXC::Config->load_config($vmid);
+ PVE::LXC::Config->check_lock($conf);
- my $lockcmd = sub {
- return $rpcenv->fork_worker('vzshutdown', $vmid, $authuser, $realcmd);
+ PVE::LXC::vm_stop($vmid, 0, $timeout, $param->{forceStop});
+ });
};
- return PVE::LXC::Config->lock_config($vmid, $lockcmd);
+ return $rpcenv->fork_worker('vzshutdown', $vmid, $authuser, $realcmd);
}});
__PACKAGE__->register_method({
my $realcmd = sub {
my $upid = shift;
- syslog('info', "suspend CT $vmid: $upid\n");
-
- my $conf = PVE::LXC::Config->load_config($vmid);
- PVE::LXC::Config->check_lock($conf);
+ PVE::LXC::Config->lock_config($vmid, sub {
+ syslog('info', "suspend CT $vmid: $upid\n");
- my $cmd = ['lxc-checkpoint', '-n', $vmid, '-s', '-D', '/var/lib/vz/dump'];
- run_command($cmd);
- };
+ my $conf = PVE::LXC::Config->load_config($vmid);
+ PVE::LXC::Config->check_lock($conf);
- my $lockcmd = sub {
- return $rpcenv->fork_worker('vzsuspend', $vmid, $authuser, $realcmd);
+ my $cmd = ['lxc-checkpoint', '-n', $vmid, '-s', '-D', '/var/lib/vz/dump'];
+ run_command($cmd);
+ });
};
- return PVE::LXC::Config->lock_config($vmid, $lockcmd);
+ return $rpcenv->fork_worker('vzsuspend', $vmid, $authuser, $realcmd);
}});
__PACKAGE__->register_method({