[lxc-devel] [lxc/master] tests: skip unpriv tests on broken overlay module
brauner on Github
lxc-bot at linuxcontainers.org
Sun Dec 25 11:29:12 UTC 2016
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 626 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20161225/f1812f14/attachment.bin>
-------------- next part --------------
From c3c5ffc86c8384414bcfa24db8ac4ce96640dcdb Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Sun, 25 Dec 2016 12:26:17 +0100
Subject: [PATCH] tests: skip unpriv tests on broken overlay module
This mainly affects Trusty. The 3.13 kernel has a broken overlay module which
does not handle symlinks correctly. This is a problem for containers that use
an overlay based rootfs since safe_mount() uses /proc/<pid>/fd/<fd-number> in
its calls to mount().
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/tests/lxc-test-unpriv | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/src/tests/lxc-test-unpriv b/src/tests/lxc-test-unpriv
index afe86fa..ea9cf84 100755
--- a/src/tests/lxc-test-unpriv
+++ b/src/tests/lxc-test-unpriv
@@ -27,6 +27,43 @@ if [ $(id -u) -ne 0 ]; then
echo "ERROR: Must run as root."
exit 1
fi
+
+# Test if we're using an overlayfs module that handles symlinks correctly. If
+# not, we skip these tests since overlay clones will not work correctly.
+OVERLAYFS=$(modprobe -q overlayfs)
+if [ "${?}" -eq 0 ]; then
+ TMPDIR=$(mktemp -d)
+
+ MOUNTDIR="${TMPDIR}/ovl_symlink_test"
+
+ mkdir ${MOUNTDIR}
+
+ sudo mount -t tmpfs none ${MOUNTDIR}
+
+ mkdir "${MOUNTDIR}/lowerdir" "${MOUNTDIR}/upperdir" "${MOUNTDIR}/overlayfs"
+ sudo mount -t overlayfs -o lowerdir="${MOUNTDIR}/lowerdir",upperdir="${MOUNTDIR}/upperdir" none "${MOUNTDIR}/overlayfs"
+
+ CORRECT_LINK_TARGET="${MOUNTDIR}/overlayfs/dummy_file"
+ exec 9> "${CORRECT_LINK_TARGET}"
+
+ DETECTED_LINK_TARGET=$(readlink -q /proc/$$/fd/9)
+ echo $DETECTED_LINK_TARGET
+
+ # cleanup
+ exec 9>&-
+
+ sudo umount "${MOUNTDIR}/overlayfs"
+ sudo umount ${MOUNTDIR}
+
+ rmdir ${MOUNTDIR}
+
+ # This overlay module does not correctly handle symlinks, so skip the
+ # tests.
+ if [ "${DETECTED_LINK_TARGET}" != "${CORRECT_LINK_TARGET}" ]; then
+ exit 0
+ fi
+fi
+
which newuidmap >/dev/null 2>&1 || { echo "'newuidmap' command is missing" >&2; exit 1; }
DONE=0
More information about the lxc-devel
mailing list