[CRIU] [PATCH 2/2] make it possible to use --enable-fs more than once

Oleg Nesterov oleg at redhat.com
Mon Apr 20 08:42:26 PDT 2015


Change add_fsname_auto() to join multiple --enable-fs options.

Note: "all" always wins, and "--enable-fs foo,all,bar" results
in fsauto_names = "all" too.

Signed-off-by: Oleg Nesterov <oleg at redhat.com>
---
 mount.c |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/mount.c b/mount.c
index 970da99..b6930db 100644
--- a/mount.c
+++ b/mount.c
@@ -1365,6 +1365,7 @@ static struct fstype fstypes[32] = {
 	},
 };
 
+static char fsauto_all[] = "all";
 static char *fsauto_names;
 
 static bool css_contains(const char *css, const char *str)
@@ -1391,7 +1392,7 @@ static bool fsname_is_auto(const char *name)
 	if (!fsauto_names)
 		return false;
 
-	if (strcmp(fsauto_names, "all") == 0)
+	if (fsauto_names == fsauto_all)
 		return true;
 
 	return css_contains(fsauto_names, name);
@@ -1399,8 +1400,21 @@ static bool fsname_is_auto(const char *name)
 
 bool add_fsname_auto(const char *names)
 {
-	xfree(fsauto_names);
-	fsauto_names = xstrdup(names);
+	char *old = fsauto_names;
+
+	if (old == fsauto_all)
+		return true;
+
+	if (css_contains(names, fsauto_all))
+		fsauto_names = fsauto_all;
+	else if (!old)
+		fsauto_names = xstrdup(names);
+	else {
+		fsauto_names = NULL;
+		asprintf(&fsauto_names, "%s,%s", old, names);
+	}
+
+	xfree(old);
 	return fsauto_names != NULL;
 }
 
-- 
1.5.5.1



More information about the CRIU mailing list