Files
apfstests/tests/xfs/244
T
Dave Chinner b9b5d74a9e xfs: New _require_* tests for CRC enabled filesystems
CRCs always enabled 32 bit project inodes and attr2 formats, hence
they cannot be turned off. Add new require rules for the tests that
require attr and 16 bit project IDs so these tests are avoided on
CRC enabled filesystems.

Also, add a xfs_db write check so that we can avoid tests that are
dependent on xfs_db modifying filesystem structures as they will
fail on CRC enabled filessystems right now. This is just temporary
until full write xfs_db support is available.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2014-01-22 07:21:18 -06:00

139 lines
4.0 KiB
Bash
Executable File

#! /bin/bash
# FS QA Test No. 244
#
# test to verify that proper project quota id is correctly set
#
#-----------------------------------------------------------------------
# Copyright (c) 2010 Arkadiusz Miƛkiewicz. 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
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
. ./common/quota
_cleanup()
{
cd /
umount $SCRATCH_MNT 2>/dev/null
rm -f $tmp.*
}
# real QA test starts here
_supported_fs xfs
_require_xfs_quota
_require_scratch
_require_projid32bit
_require_projid16bit
export MOUNT_OPTIONS="-opquota"
# make fs with no projid32bit
_scratch_mkfs_xfs -i projid32bit=0 >> $seqres.full || _fail "mkfs failed"
_qmount
# make sure project quota is supported
_require_prjquota ${SCRATCH_DEV}
dir=$SCRATCH_MNT/project
status=0
echo "Silence is golden"
# Do testing on filesystem with projid32bit feature disabled
mkdir $dir
touch $dir/below16bit
# below 16bit value
$XFS_QUOTA_PROG -x -c "project -s -p $dir/below16bit 3422" $SCRATCH_DEV \
>> $seqres.full
projid=$($XFS_IO_PROG -r -c "lsproj" $dir/below16bit)
if [ "projid = 3422" != "$projid" ]; then
echo "FAIL: projid32bit disabled: returned projid value ($projid)"
echo " doesn't match set one (projid = 3422)"
status=1
fi
# 32bit value, should fail
touch $dir/over16bit
if $XFS_QUOTA_PROG -x -c "project -s -p $dir/over16bit 108545" $SCRATCH_DEV \
>> $seqres.full 2>&1; then
echo "FAIL: projid32bit disabled: setting 32bit projid succeeded"
echo " while it should fail"
status=1
fi
# over 32bit value, should fail
touch $dir/over32bit
if $XFS_QUOTA_PROG -x -c "project -s -p $dir/over32bit 5344967296" $SCRATCH_DEV >> $seqres.full 2>&1; then
echo "FAIL: projid32bit disabled: setting over 32bit projid succeeded"
echo " while it should fail"
status=1
fi
# Do testing on filesystem with projid32bit feature enabled
umount $SCRATCH_DEV 2>/dev/null
_scratch_mkfs_xfs -i projid32bit=1 >> $seqres.full || _fail "mkfs failed"
_qmount
mkdir $dir
touch $dir/below16bit
# below 16bit value, should succeed
$XFS_QUOTA_PROG -x -c "project -s -p $dir/below16bit 3422" $SCRATCH_DEV \
>> $seqres.full
projid=$($XFS_IO_PROG -r -c "lsproj" $dir/below16bit)
if [ "projid = 3422" != "$projid" ]; then
echo "FAIL: projid32bit enabled: returned projid value ($projid)"
echo " doesn't match set one (projid = 3422)"
status=1
fi
# 32bit value, should succeed
touch $dir/over16bit
if $XFS_QUOTA_PROG -x -c "project -s -p $dir/over16bit 108545" $SCRATCH_DEV \
>> $seqres.full 2>&1; then
projid=$($XFS_IO_PROG -r -c "lsproj" $dir/over16bit)
if [ "projid = 108545" != "$projid" ]; then
echo "FAIL: projid32bit enabled: returned projid value ($projid)"
echo " doesn't match set one (projid = 108545)"
status=1
fi
else
echo "FAIL: projid32bit enabled: setting 32bit projid failed"
echo " while it should succeed"
status=1
fi
# over 32bit value, should fail
touch $dir/over32bit
if $XFS_QUOTA_PROG -x -c "project -s -p $dir/over32bit 5344967296" $SCRATCH_DEV \
>> $seqres.full 2>&1; then
echo "FAIL: projid32bit enabled: setting over 32bit projid succeeded"
echo " while it should fail"
status=1
fi