On Tue, Jun 23, 2020 at 10:47:44AM +0200, Robert Vogelgesang wrote: > Hello @all, > > in 4.0 and master branches, the lxc-stop command is currently a > no-op when using the --nowait flag. Patch against current 4.0 > branch attached, should apply to master, too. > > Best regards,
Hey Robert, Thanks for the patch. I've picked your changes up and created a PR with you as author and with your SOB added here: https://github.com/lxc/lxc/pull/3456 can you quickly give your ack or nack on this? Thanks! Christian > > Robert > > diff -up lxc-stable-4.0/src/lxc/lxccontainer.c.nowait > lxc-stable-4.0/src/lxc/lxccontainer.c > --- lxc-stable-4.0/src/lxc/lxccontainer.c.nowait 2020-06-15 > 18:52:01.000000000 +0200 > +++ lxc-stable-4.0/src/lxc/lxccontainer.c 2020-06-16 15:52:20.782513170 > +0200 > @@ -2096,41 +2096,41 @@ static bool do_lxcapi_shutdown(struct lx > > if (ret < MAX_STATE) > return false; > + } > > - if (pidfd >= 0) { > - struct pollfd pidfd_poll = { > - .events = POLLIN, > - .fd = pidfd, > - }; > - > - killret = lxc_raw_pidfd_send_signal(pidfd, haltsignal, > - NULL, 0); > - if (killret < 0) > - return log_warn(false, "Failed to send signal > %d to pidfd %d", > - haltsignal, pidfd); > - > - TRACE("Sent signal %d to pidfd %d", haltsignal, pidfd); > - > - /* > - * No need for going through all of the state server > - * complications anymore. We can just poll on pidfds. :) > - */ > - > - if (timeout != 0) { > - ret = poll(&pidfd_poll, 1, timeout * 1000); > - if (ret < 0 || !(pidfd_poll.revents & POLLIN)) > - return false; > - > - TRACE("Pidfd polling detected container exit"); > - } > - } else { > - killret = kill(pid, haltsignal); > - if (killret < 0) > - return log_warn(false, "Failed to send signal > %d to pid %d", > - haltsignal, pid); > + if (pidfd >= 0) { > + struct pollfd pidfd_poll = { > + .events = POLLIN, > + .fd = pidfd, > + }; > + > + killret = lxc_raw_pidfd_send_signal(pidfd, haltsignal, > + NULL, 0); > + if (killret < 0) > + return log_warn(false, "Failed to send signal %d to > pidfd %d", > + haltsignal, pidfd); > + > + TRACE("Sent signal %d to pidfd %d", haltsignal, pidfd); > + > + /* > + * No need for going through all of the state server > + * complications anymore. We can just poll on pidfds. :) > + */ > + > + if (timeout != 0) { > + ret = poll(&pidfd_poll, 1, timeout * 1000); > + if (ret < 0 || !(pidfd_poll.revents & POLLIN)) > + return false; > > - TRACE("Sent signal %d to pid %d", haltsignal, pid); > + TRACE("Pidfd polling detected container exit"); > } > + } else { > + killret = kill(pid, haltsignal); > + if (killret < 0) > + return log_warn(false, "Failed to send signal %d to pid > %d", > + haltsignal, pid); > + > + TRACE("Sent signal %d to pid %d", haltsignal, pid); > } > > if (timeout == 0) > _______________________________________________ > lxc-devel mailing list > lxc-devel@lists.linuxcontainers.org > http://lists.linuxcontainers.org/listinfo/lxc-devel _______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel