#! /bin/bash
# FS QA Test 006
#
# Test visible whiteout issue after renaming file from lowerdir to a dir in
# upperdir.
#
# Upstream commit 45d117389696 ("ovl: ignore lower entries when checking purity
# of non-directory entries") fixed the issue
#
#-----------------------------------------------------------------------
# Copyright (c) 2016 Red Hat Inc.,  All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it would be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write the Free Software Foundation,
# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#-----------------------------------------------------------------------
#

seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"

here=`pwd`
tmp=/tmp/$$
status=1	# failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

_cleanup()
{
	cd /
	rm -f $tmp.*
}

# get standard environment, filters and checks
. ./common/rc
. ./common/filter

rm -f $seqres.full

# real QA test starts here
_supported_fs overlay
_supported_os Linux
_require_scratch

echo "Silence is golden"

# Remove all files from previous tests
_scratch_mkfs

# Create test file/dir before mount
mkdir -p $OVL_BASE_SCRATCH_MNT/$OVL_LOWER
mkdir -p $OVL_BASE_SCRATCH_MNT/$OVL_UPPER
touch $OVL_BASE_SCRATCH_MNT/$OVL_LOWER/lowertestfile
mkdir $OVL_BASE_SCRATCH_MNT/$OVL_UPPER/uppertestdir

_scratch_mount

# rename lowertestfile to uppertestdir, this triggers copyup and creates
# whiteout in $OVL_UPPER
mv $SCRATCH_MNT/lowertestfile $SCRATCH_MNT/uppertestdir
# the lowertestfile can be removed
rm $SCRATCH_MNT/uppertestdir/lowertestfile
# no file no whiteout file in upptestdir
ls $SCRATCH_MNT/uppertestdir

# success, all done
status=0
exit
