[lxc-devel] [PATCH] Remove --close-all-fds (-C) from lxc-start and always close any inherited fd.

Stéphane Graber stgraber at ubuntu.com
Thu May 24 16:41:53 UTC 2012


This changes the default behaviour from complaining about it but not closing
the inherited fds to logging an INFO entry and closing them automatically.
That's the same as always calling lxc-start with --close-all-fds.

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
Cc: Daniel Lezcano <daniel.lezcano at free.fr>
Cc: Serge Hallyn <serge.hallyn at canonical.com>

---
 doc/lxc-start.sgml.in |   15 ---------------
 src/lxc/arguments.h   |    3 ---
 src/lxc/conf.h        |    1 -
 src/lxc/lxc_start.c   |   10 +---------
 src/lxc/start.c       |   10 ++--------
 5 files changed, 3 insertions(+), 36 deletions(-)

diff --git a/doc/lxc-start.sgml.in b/doc/lxc-start.sgml.in
index 4504d58..08f1e81 100644
--- a/doc/lxc-start.sgml.in
+++ b/doc/lxc-start.sgml.in
@@ -147,21 +147,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 	</listitem>
       </varlistentry>
 
-      <varlistentry>
-	<term>
-	  <option>-C,
-	  --close-all-fds</option>
-	</term>
-	<listitem>
-	  <para>
-	  If any file descriptors are inherited, close them.  If this option
-	  is not specified, then <command>lxc-start</command> will exit with
-	  failure instead. Note: <replaceable>--daemon</replaceable> implies
-	  <replaceable>--close-all-fds</replaceable>.
-	  </para>
-	</listitem>
-      </varlistentry>
-
     </variablelist>
 
   </refsect1>
diff --git a/src/lxc/arguments.h b/src/lxc/arguments.h
index 40f0d6c..6a2ffc6 100644
--- a/src/lxc/arguments.h
+++ b/src/lxc/arguments.h
@@ -58,9 +58,6 @@ struct lxc_arguments {
 	/* for lxc-wait */
 	char *states;
 
-	/* close fds from parent? */
-	int close_all_fds;
-
 	/* remaining arguments */
 	char *const *argv;
 	int argc;
diff --git a/src/lxc/conf.h b/src/lxc/conf.h
index 09f55cb..24e7c43 100644
--- a/src/lxc/conf.h
+++ b/src/lxc/conf.h
@@ -215,7 +215,6 @@ struct lxc_conf {
 	struct lxc_console console;
 	struct lxc_rootfs rootfs;
 	char *ttydir;
-	int close_all_fds;
 };
 
 /*
diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c
index 7559444..fdd4c72 100644
--- a/src/lxc/lxc_start.c
+++ b/src/lxc/lxc_start.c
@@ -58,9 +58,8 @@ static int my_parser(struct lxc_arguments* args, int c, char* arg)
 {
 	switch (c) {
 	case 'c': args->console = arg; break;
-	case 'd': args->daemonize = 1; args->close_all_fds = 1; break;
+	case 'd': args->daemonize = 1; break;
 	case 'f': args->rcfile = arg; break;
-	case 'C': args->close_all_fds = 1; break;
 	case 's': return lxc_config_define_add(&defines, arg);
 	}
 	return 0;
@@ -71,7 +70,6 @@ static const struct option my_longopts[] = {
 	{"rcfile", required_argument, 0, 'f'},
 	{"define", required_argument, 0, 's'},
 	{"console", required_argument, 0, 'c'},
-	{"close-all-fds", no_argument, 0, 'C'},
 	LXC_COMMON_OPTIONS
 };
 
@@ -87,9 +85,6 @@ Options :\n\
   -d, --daemon         daemonize the container\n\
   -f, --rcfile=FILE    Load configuration file FILE\n\
   -c, --console=FILE   Set the file output for the container console\n\
-  -C, --close-all-fds  If any fds are inherited, close them\n\
-                       If not specified, exit with failure instead\n\
-		       Note: --daemon implies --close-all-fds\n\
   -s, --define KEY=VAL Assign VAL to configuration variable KEY\n",
 	.options   = my_longopts,
 	.parser    = my_parser,
@@ -204,9 +199,6 @@ int main(int argc, char *argv[])
 		return err;
 	}
 
-	if (my_args.close_all_fds)
-		conf->close_all_fds = 1;
-
 	err = lxc_start(my_args.name, args, conf);
 
 	/*
diff --git a/src/lxc/start.c b/src/lxc/start.c
index 920ff77..ddc0923 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -140,7 +140,6 @@ int lxc_check_inherited(struct lxc_conf *conf, int fd_to_ignore)
 	int fd, fddir;
 	DIR *dir;
 
-restart:
 	dir = opendir("/proc/self/fd");
 	if (!dir) {
 		WARN("failed to open directory: %m");
@@ -167,13 +166,8 @@ restart:
 		if (match_fd(fd))
 			continue;
 
-		if (conf->close_all_fds) {
-			close(fd);
-			closedir(dir);
-			INFO("closed inherited fd %d", fd);
-			goto restart;
-		}
-		WARN("inherited fd %d", fd);
+		close(fd);
+		INFO("closed inherited fd %d", fd);
 	}
 
 	closedir(dir); /* cannot fail */
-- 
1.7.9.5





More information about the lxc-devel mailing list