looks like we have a race in lxc-stop in some cases, will look into it
later but it seems to be functioning properly.

tested series, everything looks fine.

Tested-by: Oguz Bektas <o.bek...@proxmox.com>

On Wed, May 08, 2019 at 02:02:43PM +0200, Thomas Lamprecht wrote:
> On 5/8/19 1:58 PM, Thomas Lamprecht wrote:
> > This allows to have the same semantics as qemu-server:
> > * immediate hard-kill
> > * shutdown with kill after timeout
> > * shutdown without kill after timeout
> > 
> > And thus we finally can move the vm_shutdown API call to a correct
> > semantic, i.e., do not immediate hard kill if forceStop is not passed
> > but rather see it as stop after timeout knob.
> > 
> > Signed-off-by: Thomas Lamprecht <t.lampre...@proxmox.com>
> 
> forgot: fixes #2200
> 
> > ---
> >  src/PVE/API2/LXC/Status.pm |  2 +-
> >  src/PVE/LXC.pm             | 18 +++++++++++++-----
> >  2 files changed, 14 insertions(+), 6 deletions(-)
> > 
> > diff --git a/src/PVE/API2/LXC/Status.pm b/src/PVE/API2/LXC/Status.pm
> > index 95775fe..f6668e2 100644
> > --- a/src/PVE/API2/LXC/Status.pm
> > +++ b/src/PVE/API2/LXC/Status.pm
> > @@ -369,7 +369,7 @@ __PACKAGE__->register_method({
> >  
> >             PVE::LXC::Config->check_lock($conf);
> >  
> > -           PVE::LXC::vm_stop($vmid, $param->{forceStop}, $timeout);
> > +           PVE::LXC::vm_stop($vmid, 0, $timeout, !$param->{forceStop});
> >  
> >             return;
> >         };
> > diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
> > index f8fc37e..5d099ca 100644
> > --- a/src/PVE/LXC.pm
> > +++ b/src/PVE/LXC.pm
> > @@ -1938,8 +1938,11 @@ sub vm_start {
> >  # This is necessary because we want the post-stop hook to have completed 
> > its
> >  # unmount-all step, but post-stop happens after lxc puts the container 
> > into the
> >  # STOPPED state.
> > +# $kill - if true it will always do an immediate hard-stop
> > +# $shutdown_timeout - the timeout to wait for a gracefull shutdown
> > +# $nokill_after_timeout - if true, do not send a hardstop if shutdown 
> > timed out
> >  sub vm_stop {
> > -    my ($vmid, $kill, $shutdown_timeout) = @_;
> > +    my ($vmid, $kill, $shutdown_timeout, $nokill_after_timeout) = @_;
> >  
> >      # Open the container's command socket.
> >      my $path = "\0/var/lib/lxc/$vmid/command";
> > @@ -1961,10 +1964,15 @@ sub vm_stop {
> >  
> >      if ($kill) {
> >     push @$cmd, '--kill'; # doesn't allow timeouts
> > -    } elsif (defined($shutdown_timeout)) {
> > -   push @$cmd, '--timeout', $shutdown_timeout;
> > -   # Give run_command 5 extra seconds
> > -   $shutdown_timeout += 5;
> > +    } else {
> > +   # lxc-stop uses a default timeout
> > +   push @$cmd, '--nokill' if $nokill_after_timeout;
> > +
> > +   if (defined($shutdown_timeout)) {
> > +       push @$cmd, '--timeout', $shutdown_timeout;
> > +       # Give run_command 5 extra seconds
> > +       $shutdown_timeout += 5;
> > +   }
> >      }
> >  
> >      eval { PVE::Tools::run_command($cmd, timeout => $shutdown_timeout) };
> > 
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to