[OpenWrt-Devel] [PATCH] procd: fix shutdown when running in a container
Hans Dedecker
dedeckeh at gmail.com
Wed Aug 7 04:08:28 EDT 2019
On Mon, Aug 5, 2019 at 6:09 PM Paul Spooren <mail at aparcar.org> wrote:
>
> Applies patch from @mikma [0] to fix Docker shutdown. Added detection to
> state.c if running in a containre or not.
>
> Tested with a x86/64 Docker image.
>
> Fixes FS#2425
>
> CC: Mikael Magnusson <mikma at users.sourceforge.net>
> CC: Petr Štetiar <ynezz at true.cz>
>
> [0]: https://github.com/mikma/lxd-openwrt/blob/master/patches/procd-master/0003-docker-fix-problem-stopping-container.patch
>
> Signed-off-by: Paul Spooren <mail at aparcar.org>
Patch applied with some style changes
Hans
> ---
> state.c | 25 +++++++++++++++----------
> 1 file changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/state.c b/state.c
> index ccf4104..b7cba88 100644
> --- a/state.c
> +++ b/state.c
> @@ -20,6 +20,7 @@
> #include <sys/types.h>
> #include <signal.h>
>
> +#include "container.h"
> #include "procd.h"
> #include "syslog.h"
> #include "plug/hotplug.h"
> @@ -157,18 +158,22 @@ static void state_enter(void)
> else
> LOG("- reboot -\n");
>
> - /* Allow time for last message to reach serial console, etc */
> - sleep(1);
> + if(!is_container()) {
> + /* Allow time for last message to reach serial console, etc */
> + sleep(1);
>
> - /* We have to fork here, since the kernel calls do_exit(EXIT_SUCCESS)
> - * in linux/kernel/sys.c, which can cause the machine to panic when
> - * the init process exits... */
> - if (!vfork( )) { /* child */
> - reboot(reboot_event);
> - _exit(EXIT_SUCCESS);
> + /* We have to fork here, since the kernel calls do_exit(EXIT_SUCCESS)
> + * in linux/kernel/sys.c, which can cause the machine to panic when
> + * the init process exits... */
> + if (!vfork( )) { /* child */
> + reboot(reboot_event);
> + _exit(EXIT_SUCCESS);
> + }
> + while (1)
> + sleep(1);
> + } else {
> + exit(0);
> }
> - while (1)
> - sleep(1);
> #else
> exit(0);
> #endif
> --
> 2.20.1
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list