[lxc-devel] [PATCH 1/1] lxc-start-ephemeral: handle the overlayfs workdir option (v2)
Serge Hallyn
serge.hallyn at ubuntu.com
Tue Jan 13 00:08:37 UTC 2015
We fixed this some time ago for basic lxc-start, but never did
lxc-start-ephemeral.
Since the lxc-start patches were pushed, Miklos has given us a
way to detect whether we need the workdir= option. So the
bdev.c code could be simplified to check for "overlay\n" in
/proc/filesystems just as lxc-start-ephemeral does. This
patch doesn't do that.
Changelog (v2):
1. use 'overlay' fstype for new overlay upstream module
2. avoid using unneeded readlines().
Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>
---
src/lxc/lxc-start-ephemeral.in | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/src/lxc/lxc-start-ephemeral.in b/src/lxc/lxc-start-ephemeral.in
index c999e74..36e2579 100644
--- a/src/lxc/lxc-start-ephemeral.in
+++ b/src/lxc/lxc-start-ephemeral.in
@@ -219,6 +219,14 @@ for entry in args.cdir:
dst_path = "%s/rootfs/%s" % (dest_path, src_path)
overlay_dirs += [(src_path, dst_path)]
+# do we have the new overlay fs which requires workdir, or the older
+# overlayfs which does not?
+have_new_overlay = False
+with open("/proc/filesystems", "r") as fd:
+ for line in fd:
+ if line == "nodev\toverlay\n":
+ have_new_overlay = True
+
# Generate pre-mount script
with open(os.path.join(dest_path, "pre-mount"), "w+") as fd:
os.fchmod(fd.fileno(), 0o755)
@@ -231,16 +239,31 @@ LXC_NAME="%s"
count = 0
for entry in overlay_dirs:
target = "%s/delta%s" % (dest_path, count)
+ workdir = "%s/work%s" % (dest_path, count)
fd.write("mkdir -p %s %s\n" % (target, entry[1]))
+ if have_new_overlay:
+ fd.write("mkdir -p %s\n" % workdir)
if args.storage_type == "tmpfs":
fd.write("mount -n -t tmpfs -o mode=0755 none %s\n" % (target))
+ if have_new_overlay:
+ fd.write("mount -n -t tmpfs -o mode=0755 none %s\n" % (workdir))
fd.write("getfacl -a %s | setfacl --set-file=- %s || true\n" % (entry[0], target))
fd.write("getfacl -a %s | setfacl --set-file=- %s || true\n" % (entry[0], entry[1]))
+ if have_new_overlay:
+ fd.write("getfacl -a %s | setfacl --set-file=- %s || true\n" % (entry[0], workdir))
if args.union_type == "overlayfs":
- fd.write("mount -n -t overlayfs"
+ if have_new_overlay:
+ fd.write("mount -n -t overlay"
+ " -oupperdir=%s,lowerdir=%s,workdir=%s none %s\n" % (
+ target,
+ entry[0],
+ workdir,
+ entry[1]))
+ else:
+ fd.write("mount -n -t overlayfs"
" -oupperdir=%s,lowerdir=%s none %s\n" % (
target,
entry[0],
--
2.1.0
More information about the lxc-devel
mailing list