[PATCH v2] overlay: notrun if upper fs does not support d_type

Xiong Zhou
2016-04-22T09:22:16Z

Overlayfs whiteout can be visible if underlying upper fs does not
support d_type. Kernel commit
45aebea (ovl: Ensure upper filesystem supports d_type)
prevents mounting overlayfs like this since v4.6-rc1.

Check upper fs before mounting overlay, mark as not run if needs.

Signed-off-by: Xiong Zhou <xzhou@redhat.com>
---

v2: use case to make this less ugly..

common/rc | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

diff --git a/common/rc b/common/rc
index 8bec836..946b354 100644
--- a/common/rc
+++ b/common/rc
@@ -273,6 +273,22 @@ _overlay_mount()
local dir=$1
local mnt=$2
shift 2
+
+ local upper_fst=$(df --output=fstype $dir | tail -1)
+ case "$upper_fst" in
+ xfs)
+ if ! xfs_info $dir | grep -q "ftype=1" ; then
+ _notrun "upper fs needs to support d_type"
+ fi
+ ;;
+ ext2|ext3|ext4)
+ if ! tune2fs -l $(df --output=source $dir | tail -1) | \
+ grep -q filetype ; then
+ _notrun "upper fs needs to support d_type"
+ fi
+ ;;
+ esac
+
mkdir -p $dir/$OVERLAY_UPPER_DIR
mkdir -p $dir/$OVERLAY_LOWER_DIR
mkdir -p $dir/$OVERLAY_WORK_DIR
--
2.5.5