From: Arkadiusz Miskiewicz <arekm@xxxxxxxx> Test 3 quota project setting id conditions: - set 16bit project quota id -> should succeed - set 32bit project quota id -> should succeed (with projid32bit patch applied; fail otherwise) - over 32bit project quota id -> should always fail Signed-off-by: Arkadiusz Miśkiewicz <arekm@xxxxxxxx> --- 243 | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 243.out | 2 + group | 1 + 3 files changed, 124 insertions(+), 0 deletions(-) create mode 100644 243 create mode 100644 243.out diff --git a/243 b/243 new file mode 100644 index 0000000..34fa969 --- /dev/null +++ b/243 @@ -0,0 +1,121 @@ +#! /bin/bash +# FS QA Test No. 243 +# +# 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 +# +#----------------------------------------------------------------------- +# +# creator +owner=arekm@xxxxxxxx + +seq=`basename $0` +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 + +dir=$SCRATCH_MNT/project + +_require_scratch +_scratch_mkfs_xfs >/dev/null 2>&1 + +#if pquota's already in mount options then we dont need to enable +# we can't run with group quotas +if ( echo $MOUNT_OPTIONS | egrep -q g??quota ) +then + _notrun "Can't run with group quotas enabled" +fi +EXTRA_MOUNT_OPTIONS="-o pquota" + +if ! _scratch_mount "$EXTRA_MOUNT_OPTIONS" >$tmp.out 2>&1 +then + cat $tmp.out + _fail "!!! failed to mount" +fi + +src/feature -p $SCRATCH_DEV +[ $? -ne 0 ] && _notrun "Installed kernel does not support project quotas" + +status=0 + +echo "Silence is golden" + +mkdir $dir +touch $dir/below16bit +# below 16bit value +xfs_quota -x -c "project -s -p $dir/below16bit 3422" $SCRATCH_DEV >> $seq.full +projid=$($XFS_IO_PROG -r -c "lsproj" $dir/below16bit) +if [ "projid = 3422" != "$projid" ]; then + echo "FAIL: returned projid value ($projid) doesn't match set one (projid = 3422)" + status=1 +fi + +# 0x20 - projid32bit features2 bit +features2_pre=$(xfs_db -x -r -c 'sb' -c 'print features2' $SCRATCH_DEV | awk ' { print $3 } ') +projid32bit_pre=$((features2_pre & 0x20)) +# over 16bit value +touch $dir/over16bit +if (xfs_quota -x -c "project -s -p $dir/over16bit 108545" $SCRATCH_DEV >> $seq.full); then + # success? verify if projid matches + projid=$($XFS_IO_PROG -r -c "lsproj" $dir/over16bit) + if [ "projid = 108545" != "$projid" ]; then + echo "FAIL: returned projid value ($projid) doesn't match set one (projid = 108545)" + status=1 + else + # if it really succeeded then projid32bit feature bit is supposed to be set automaticly + features2_post=$(xfs_db -x -r -c 'sb' -c 'print features2' $SCRATCH_DEV | awk ' { print $3 } ') + projid32bit_post=$((features2_post & 0x20)) + if [ "$projid32bit_post" -eq 0 ]; then + echo "FAIL: setting 32bit projid succeeded but projid32bit features2 bit wasn't automaticly set" + status=1 + fi + fi +else + # didn't succeed but it should if projid32bit feature bit was already set + if [ "$projid32bit_pre" -gt 0 ]; then + echo "FAIL: setting 32bit projid failed but it should succeeded" + status=1 + fi +fi + +# over 32bit value, should fail +touch $dir/over32bit +if xfs_quota -x -c "project -s -p $dir/over32bit 5344967296" $SCRATCH_DEV >> $seq.full; then + echo "FAIL: setting over 32bit projid succeeded while it should fail" + status=1 +fi diff --git a/243.out b/243.out new file mode 100644 index 0000000..d075942 --- /dev/null +++ b/243.out @@ -0,0 +1,2 @@ +QA output created by 243 +Silence is golden diff --git a/group b/group index ff16bb3..e7ba59b 100644 --- a/group +++ b/group @@ -356,3 +356,4 @@ deprecated 240 auto aio quick rw 241 auto 242 auto quick prealloc +243 auto quota quick -- 1.7.1 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs