From eb283f2a97b6c409ba516a7ab29bb5ad4f86c0db Mon Sep 17 00:00:00 2001
From: LiuHao <liuhao27@huawei.com>
Date: Mon, 25 Nov 2019 21:15:40 +0800
Subject: [PATCH 123/131] in accordance with hook spec in oci

Signed-off-by: LiuHao <liuhao27@huawei.com>
---
 src/lxc/cgroups/cgfsng.c |  4 ++--
 src/lxc/conf.c           |  6 +++---
 src/lxc/start.c          | 14 ++++----------
 3 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c
index 7c92abe6..87b49b0f 100644
--- a/src/lxc/cgroups/cgfsng.c
+++ b/src/lxc/cgroups/cgfsng.c
@@ -2013,8 +2013,8 @@ __cgfsng_ops static bool cgfsng_attach(struct cgroup_ops *ops, const char *name,
 
 		path = lxc_cmd_get_cgroup_path(name, lxcpath, h->controllers[0]);
 		/* not running */
-		if (!path)
-			continue;
+		if (path == NULL)
+                        return false;
 
 		fullpath = build_full_cgpath_from_monitorpath(h, path, "cgroup.procs");
 		free(path);
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 5fd65e73..21ec340f 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -4937,9 +4937,9 @@ static int do_run_oci_hooks(const char *name, const char *lxcpath, struct lxc_co
 	case OCI_HOOK_POSTSTOP:
 		for (i = 0; i < lc->ocihooks->poststop_len; i++) {
 			work_conf.ocihook = lc->ocihooks->poststop[i];
-			ret = run_ocihook_script_argv(name, "lxc", &work_conf, lxcpath, rootpath);
-			if (ret != 0)
-				break;
+			nret = run_ocihook_script_argv(name, "lxc", &work_conf, lxcpath, rootpath);
+			if (nret != 0)
+				WARN("running poststart hook %zu failed, ContainerId: %s", i, name);
 		}
 		break;
 	default:
diff --git a/src/lxc/start.c b/src/lxc/start.c
index c1e0d5d2..7246283e 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -1185,14 +1185,11 @@ void lxc_fini(const char *name, struct lxc_handler *handler)
 	while (namespace_count--)
 		free(namespaces[namespace_count]);
 
-	// if we shared pid namespace with others, should kill all processes within container cgroup
-	if (handler->conf->ns_share[LXC_NS_PID] != NULL) {
-		TRACE("Trying to kill all subprocess");
-		signal_all_processes(handler);
-		TRACE("Finished kill all subprocess");
-	}
 retry:
 	if (!cgroup_ops->destroy(cgroup_ops, handler)) {
+                TRACE("Trying to kill all subprocess");
+                signal_all_processes(handler);
+                TRACE("Finished kill all subprocess");
 		if (retry_count < max_retry) {
 			usleep(100 * 1000); /* 100 millisecond */
 			retry_count++;
@@ -2851,10 +2848,7 @@ int do_lxcapi_clean_resource(char *name, char *lxcpath, struct lxc_conf *conf, p
 		ret = -1;
 		goto out;
 	}
-	// if we shared pid namespace with others, should kill all processes within container cgroup
-	if (handler->conf->ns_share[LXC_NS_PID] != NULL) {
-		signal_all_processes(handler);
-	}
+	signal_all_processes(handler);
 
 	if (run_oci_hooks(handler->name, "oci-poststop", handler->conf, handler->lxcpath)) {
 		ERROR("Failed to run lxc.hook.post-stop for container \"%s\".", handler->name);
-- 
2.23.0

