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

Reply via email to