[lxc-devel] [PATCH 2/3] Exit on errors in restore()'s worker

Tycho Andersen tycho.andersen at canonical.com
Tue Sep 2 23:37:04 UTC 2014


If we just return here, we end up with two processes executing the caller's
code, which is not good.

Signed-off-by: Tycho Andersen <tycho.andersen at canonical.com>
---
 src/lxc/lxccontainer.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index ee8f491..6d45c8e 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -3857,7 +3857,7 @@ static bool lxcapi_restore(struct lxc_container *c, char *directory, bool verbos
 		struct criu_opts os;
 
 		if (unshare(CLONE_NEWNS))
-			return false;
+			exit(1);
 
 		/* CRIU needs the lxc root bind mounted so that it is the root of some
 		 * mount. */
@@ -3865,15 +3865,15 @@ static bool lxcapi_restore(struct lxc_container *c, char *directory, bool verbos
 
 		if (rootfs_is_blockdev(c->lxc_conf)) {
 			if (do_rootfs_setup(c->lxc_conf, c->name, c->config_path) < 0)
-				return false;
+				exit(1);
 		}
 		else {
 			if (mkdir(rootfs->mount, 0755) < 0 && errno != EEXIST)
-				return false;
+				exit(1);
 
 			if (mount(rootfs->path, rootfs->mount, NULL, MS_BIND, NULL) < 0) {
 				rmdir(rootfs->mount);
-				return false;
+				exit(1);
 			}
 		}
 
-- 
1.9.1



More information about the lxc-devel mailing list