[lxc-devel] [lxc/master] move and rename mount_entry_create_aufs_dirs()

brauner on Github lxc-bot at linuxcontainers.org
Wed Feb 3 07:51:26 UTC 2016


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 624 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20160203/aeb0a33e/attachment.bin>
-------------- next part --------------
From ff63aeccfca7284458a1e8c278ebc9e35f72e821 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at mailbox.org>
Date: Wed, 3 Feb 2016 00:41:14 +0100
Subject: [PATCH] move and rename mount_entry_create_aufs_dirs()

- The function mount_entry_create_aufs_dirs() moves from conf.c to
  lxcaufs.{c,h} where it belongs.
- In accordance with the "aufs_" prefix naming scheme for functions associated
  with lxcaufs.{c,h} mount_entry_create_aufs_dirs() becomes aufs_mkdir().

Signed-off-by: Christian Brauner <christian.brauner at mailbox.org>
---
 src/lxc/bdev/lxcaufs.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++
 src/lxc/bdev/lxcaufs.h |  7 ++++++
 src/lxc/conf.c         | 67 ++------------------------------------------------
 3 files changed, 73 insertions(+), 65 deletions(-)

diff --git a/src/lxc/bdev/lxcaufs.c b/src/lxc/bdev/lxcaufs.c
index 408f6a3..bb38eb5 100644
--- a/src/lxc/bdev/lxcaufs.c
+++ b/src/lxc/bdev/lxcaufs.c
@@ -312,3 +312,67 @@ int aufs_umount(struct bdev *bdev)
 		return -22;
 	return umount(bdev->dest);
 }
+
+static int aufs_mkdir(const struct mntent *mntent,
+		const struct lxc_rootfs *rootfs, const char *lxc_name,
+		const char *lxc_path)
+{
+	char lxcpath[MAXPATHLEN];
+	char *rootfsdir = NULL;
+	char *scratch = NULL;
+	char *tmp = NULL;
+	char *upperdir = NULL;
+	char **opts = NULL;
+	int fret = -1;
+	int ret = 0;
+	size_t arrlen = 0;
+	size_t i;
+	size_t len = 0;
+	size_t rootfslen = 0;
+
+	/* Since we use all of these to check whether the user has given us a
+	 * sane absolute path to create the directories needed for overlay
+	 * lxc.mount.entry entries we consider any of these missing fatal. */
+	if (!rootfs || !rootfs->path || !lxc_name || !lxc_path)
+		goto err;
+
+	opts = lxc_string_split(mntent->mnt_opts, ',');
+	if (opts)
+		arrlen = lxc_array_len((void **)opts);
+	else
+		goto err;
+
+	for (i = 0; i < arrlen; i++) {
+		if (strstr(opts[i], "br=") && (strlen(opts[i]) > (len = strlen("br="))))
+			tmp = opts[i] + len;
+	}
+	if (!tmp)
+		goto err;
+
+	upperdir = strtok_r(tmp, ":=", &scratch);
+	if (!upperdir)
+		goto err;
+
+	ret = snprintf(lxcpath, MAXPATHLEN, "%s/%s", lxc_path, lxc_name);
+	if (ret < 0 || ret >= MAXPATHLEN)
+		goto err;
+
+	rootfsdir = ovl_get_rootfs(rootfs->path, &rootfslen);
+	if (!rootfsdir)
+		goto err;
+
+	/* We neither allow users to create upperdirs outside the containerdir
+	 * nor inside the rootfs. The latter might be debatable. */
+	if ((strncmp(upperdir, lxcpath, strlen(lxcpath)) == 0) && (strncmp(upperdir, rootfsdir, rootfslen) != 0))
+		if (mkdir_p(upperdir, 0755) < 0) {
+			WARN("Failed to create upperdir");
+		}
+
+	fret = 0;
+
+err:
+	free(rootfsdir);
+	lxc_free_array((void **)opts, free);
+	return fret;
+}
+
diff --git a/src/lxc/bdev/lxcaufs.h b/src/lxc/bdev/lxcaufs.h
index e259ee2..4e0160e 100644
--- a/src/lxc/bdev/lxcaufs.h
+++ b/src/lxc/bdev/lxcaufs.h
@@ -49,4 +49,11 @@ int aufs_detect(const char *path);
 int aufs_mount(struct bdev *bdev);
 int aufs_umount(struct bdev *bdev);
 
+/*
+ * Create directories for aufs mounts.
+ */
+static int aufs_mkdir(const struct mntent *mntent,
+		const struct lxc_rootfs *rootfs, const char *lxc_name,
+		const char *lxc_path);
+
 #endif /* __LXC_AUFS_H */
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index a32513d..c2296f9 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -72,6 +72,7 @@
 #include "log.h"
 #include "caps.h"       /* for lxc_caps_last_cap() */
 #include "bdev/bdev.h"
+#include "bdev/lxcaufs.h"
 #include "bdev/lxcoverlay.h"
 #include "cgroup.h"
 #include "lxclock.h"
@@ -1726,70 +1727,6 @@ static void cull_mntent_opt(struct mntent *mntent)
 	}
 }
 
-static int mount_entry_create_aufs_dirs(const struct mntent *mntent,
-					const struct lxc_rootfs *rootfs,
-					const char *lxc_name,
-					const char *lxc_path)
-{
-	char lxcpath[MAXPATHLEN];
-	char *rootfsdir = NULL;
-	char *scratch = NULL;
-	char *tmp = NULL;
-	char *upperdir = NULL;
-	char **opts = NULL;
-	int fret = -1;
-	int ret = 0;
-	size_t arrlen = 0;
-	size_t i;
-	size_t len = 0;
-	size_t rootfslen = 0;
-
-	/* Since we use all of these to check whether the user has given us a
-	 * sane absolute path to create the directories needed for overlay
-	 * lxc.mount.entry entries we consider any of these missing fatal. */
-	if (!rootfs || !rootfs->path || !lxc_name || !lxc_path)
-		goto err;
-
-	opts = lxc_string_split(mntent->mnt_opts, ',');
-	if (opts)
-		arrlen = lxc_array_len((void **)opts);
-	else
-		goto err;
-
-	for (i = 0; i < arrlen; i++) {
-		if (strstr(opts[i], "br=") && (strlen(opts[i]) > (len = strlen("br="))))
-			tmp = opts[i] + len;
-	}
-	if (!tmp)
-		goto err;
-
-	upperdir = strtok_r(tmp, ":=", &scratch);
-	if (!upperdir)
-		goto err;
-
-	ret = snprintf(lxcpath, MAXPATHLEN, "%s/%s", lxc_path, lxc_name);
-	if (ret < 0 || ret >= MAXPATHLEN)
-		goto err;
-
-	rootfsdir = ovl_get_rootfs(rootfs->path, &rootfslen);
-	if (!rootfsdir)
-		goto err;
-
-	/* We neither allow users to create upperdirs outside the containerdir
-	 * nor inside the rootfs. The latter might be debatable. */
-	if ((strncmp(upperdir, lxcpath, strlen(lxcpath)) == 0) && (strncmp(upperdir, rootfsdir, rootfslen) != 0))
-		if (mkdir_p(upperdir, 0755) < 0) {
-			WARN("Failed to create upperdir");
-		}
-
-	fret = 0;
-
-err:
-	free(rootfsdir);
-	lxc_free_array((void **)opts, free);
-	return fret;
-}
-
 static int mount_entry_create_dir_file(const struct mntent *mntent,
 				       const char* path, const struct lxc_rootfs *rootfs,
 				       const char *lxc_name, const char *lxc_path)
@@ -1802,7 +1739,7 @@ static int mount_entry_create_dir_file(const struct mntent *mntent,
 		if (ovl_mkdir(mntent, rootfs, lxc_name, lxc_path) < 0)
 			return -1;
 	} else if (strncmp(mntent->mnt_type, "aufs", 4) == 0) {
-		if (mount_entry_create_aufs_dirs(mntent, rootfs, lxc_name, lxc_path) < 0)
+		if (aufs_mkdir(mntent, rootfs, lxc_name, lxc_path) < 0)
 			return -1;
 	}
 


More information about the lxc-devel mailing list