Skip to content

Instantly share code, notes, and snippets.

@dmcgowan
Created April 27, 2018 21:30
Show Gist options
  • Save dmcgowan/798bf8e67c27f3d65aa75ca59829c41a to your computer and use it in GitHub Desktop.
Save dmcgowan/798bf8e67c27f3d65aa75ca59829c41a to your computer and use it in GitHub Desktop.
Test overlay multiple depths
#!/bin/sh
set -x
tempdir=$(mktemp -d)
oldpwd=$(pwd)
function cleanup() {
cd $oldpwd
umount -fR $tempdir
sleep 1
rmdir $tempdir
}
trap cleanup EXIT
mount -t tmpfs tmpfs $tempdir
cd $tempdir
mkdir source-{1,2,3,4,5,6} mnt-{1,3,5} upper work mnt
# Layer/files
# L / 1 2 3 4 5 6
# 1 | 1
# 2 | 2 2
# 3 | 3 3 3
# 4 | 4 4 4 4
# 5 | 5 5 5 5 5
# 6 | 6 6 6 6 6 6
for i in {1..6}; do echo "6" > source-6/$i; done
for i in {1..5}; do echo "5" > source-5/$i; done
for i in {1..4}; do echo "4" > source-4/$i; done
for i in {1..3}; do echo "3" > source-3/$i; done
for i in {1..2}; do echo "2" > source-2/$i; done
echo "1" > source-1/1
mount -t overlay -o "ro,lowerdir=$tempdir/source-5:$tempdir/source-6" overlay mnt-5
mount -t overlay -o "ro,lowerdir=$tempdir/source-3:$tempdir/source-4" overlay mnt-3
mount -t overlay -o "ro,lowerdir=$tempdir/source-1:$tempdir/source-2" overlay mnt-1
# Lower directories cannot themselves have overlays as lower directories
# For example, the following is not allowed
#mount -t overlay -o "ro,lowerdir=$tempdir/source-2:$tempdir/mnt-3" overlay mnt-2
#mount -t overlay -o "ro,lowerdir=$tempdir/source-1:$tempdir/mnt-2" overlay mnt-1
mount -t overlay -o "rw,lowerdir=$tempdir/mnt-1:$tempdir/mnt-3:$tempdir/mnt-5,upperdir=$tempdir/upper,workdir=$tempdir/work" overlay mnt
set -e
for i in {1..6}; do test $(< mnt/$i) = "$i"; done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment