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 <mi...@users.sourceforge.net> CC: Petr Štetiar <yn...@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 <m...@aparcar.org> --- 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@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel