From: Kir Kolyshkin <k...@openvz.org> Proper handling of reboot() syscall issued from the inside of a container was always supported by OpenVZ kernels. More to say, OpenVZ relies on the fact that container calls reboot in order to distinguish between shutdown and reboot-- in the latter case container is being restarted.
This patch brings the reboot() back for OpenVZ container. Originally found when using Fedora 17 container (systemd-44-17.fc17) and reported to OpenVZ bugzilla: http://bugzilla.openvz.org/2336 Reported-by: Dāvis <davis...@inbox.lv> Cc: Konstantin Volckov <w...@parallels.com> Cc: Alexander Fenster <afens...@parallels.com> Signed-off-by: Kir Kolyshkin <k...@openvz.org> --- src/core/shutdown.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/core/shutdown.c b/src/core/shutdown.c index c3a4c39..50536fc 100644 --- a/src/core/shutdown.c +++ b/src/core/shutdown.c @@ -132,8 +132,9 @@ static int pivot_to_new_root(void) { int main(int argc, char *argv[]) { int cmd, r; unsigned retries; - bool need_umount = true, need_swapoff = true, need_loop_detach = true, need_dm_detach = true; + bool need_umount = true, need_swapoff = true, need_loop_detach = true, need_dm_detach = true, need_reboot = true; bool in_container, use_watchdog = false; + const char *container_type; char *arguments[3]; log_parse_environment(); @@ -154,7 +155,7 @@ int main(int argc, char *argv[]) { goto error; } - in_container = detect_container(NULL) > 0; + in_container = detect_container(&container_type) > 0; if (streq(argv[1], "reboot")) cmd = RB_AUTOBOOT; @@ -185,6 +186,8 @@ int main(int argc, char *argv[]) { need_swapoff = false; need_dm_detach = false; need_loop_detach = false; + if (!streq(container_type, "openvz")) + need_reboot = false; } /* Unmount all mountpoints, swaps, and loopback devices */ @@ -265,7 +268,7 @@ int main(int argc, char *argv[]) { /* If we are in a container, just exit, this will kill our * container for good. */ - if (in_container) { + if (!need_reboot) { log_error("Exiting container."); exit(0); } -- 1.7.10.4 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel