From: Christian Brauner Date: Sun, 25 Dec 2016 11:26:17 +0000 (+0100) Subject: tests: skip unpriv tests on broken overlay module X-Git-Tag: lxc-1.0.10~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8a89cf398f47bfbdc186fbeb1c9c82917dd6044;p=thirdparty%2Flxc.git 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//fd/ in its calls to mount(). Signed-off-by: Christian Brauner --- diff --git a/src/tests/lxc-test-unpriv b/src/tests/lxc-test-unpriv index 93c91a9f4..54ddc6637 100755 --- a/src/tests/lxc-test-unpriv +++ b/src/tests/lxc-test-unpriv @@ -27,6 +27,41 @@ 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. +if modprobe -q overlayfs; then + TMPDIR=$(mktemp -d) + + MOUNTDIR="${TMPDIR}/ovl_symlink_test" + + mkdir ${MOUNTDIR} + + mount -t tmpfs none ${MOUNTDIR} + + mkdir "${MOUNTDIR}/lowerdir" "${MOUNTDIR}/upperdir" "${MOUNTDIR}/overlayfs" + 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) + + # cleanup + exec 9>&- + + umount "${MOUNTDIR}/overlayfs" + 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