moby/daemon/graphdriver/btrfs
Kir Kolyshkin fa8ac94616 btrfs: ensure graphdriver home is bind mount
For some reason, shared mount propagation between the host
and a container does not work for btrfs, unless container
root directory (i.e. graphdriver home) is a bind mount.

The above issue was reproduced on SLES 12sp3 + btrfs using
the following script:

	#!/bin/bash
	set -eux -o pipefail

	# DIR should not be under a subvolume
	DIR=${DIR:-/lib}
	MNT=$DIR/my-mnt
	FILE=$MNT/file

	ID=$(docker run -d --privileged -v $DIR:$DIR:rshared ubuntu sleep 24h)
	docker exec $ID mkdir -p $MNT
	docker exec $ID mount -t tmpfs tmpfs $MNT
	docker exec $ID touch $FILE
	ls -l $FILE
	umount $MNT
	docker rm -f $ID

which fails this way:

	+ ls -l /lib/my-mnt/file
	ls: cannot access '/lib/my-mnt/file': No such file or directory

meaning the mount performed inside a priviledged container is not
propagated back to the host (even if all the mounts have "shared"
propagation mode).

The remedy to the above is to make graphdriver home a bind mount.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
(cherry picked from commit 16d822bba8)
2018-10-12 09:29:38 -07:00
..
btrfs.go btrfs: ensure graphdriver home is bind mount 2018-10-12 09:29:38 -07:00
btrfs_test.go Add canonical import comment 2018-02-05 16:51:57 -05:00
dummy_unsupported.go Add canonical import comment 2018-02-05 16:51:57 -05:00
version.go Add canonical import comment 2018-02-05 16:51:57 -05:00
version_none.go Add canonical import comment 2018-02-05 16:51:57 -05:00
version_test.go Add canonical import comment 2018-02-05 16:51:57 -05:00