mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
67b6aae742
Merge of master-melb:xfs-cmds:27128a by kenmcd. Added checks to ensure group quota is not used before attempting to mount with pquota option
103 lines
2.4 KiB
Bash
Executable File
103 lines
2.4 KiB
Bash
Executable File
#! /bin/sh
|
|
# FS QA Test No. 134
|
|
#
|
|
# test to reproduce PV951636:
|
|
# project quotas not updated if a file is mv'd into that directory
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved.
|
|
#-----------------------------------------------------------------------
|
|
#
|
|
# creator
|
|
owner=allanr@sgi.com
|
|
|
|
seq=`basename $0`
|
|
echo "QA output created by $seq"
|
|
|
|
here=`pwd`
|
|
tmp=/tmp/$$
|
|
status=1 # failure is the default!
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common.rc
|
|
. ./common.filter
|
|
. ./common.quota
|
|
|
|
_cleanup()
|
|
{
|
|
cd /
|
|
umount $SCRATCH_MNT 2>/dev/null
|
|
rm -f $tmp.*
|
|
}
|
|
#trap "_cleanup; exit \$status" 0 1 2 3 15
|
|
|
|
|
|
# real QA test starts here
|
|
_supported_fs xfs
|
|
_supported_os Linux IRIX
|
|
|
|
dir=$SCRATCH_MNT/project
|
|
|
|
#project quota files
|
|
cat >$tmp.projects <<EOF
|
|
1:$dir
|
|
EOF
|
|
|
|
cat >$tmp.projid <<EOF
|
|
test:1
|
|
EOF
|
|
|
|
cp /dev/null $seq.full
|
|
chmod a+rwx $seq.full # arbitrary users will write here
|
|
|
|
_require_scratch
|
|
_scratch_mkfs_xfs >/dev/null 2>&1
|
|
|
|
#if pquota's already in mount options then we dont need to enable
|
|
[ `echo $MOUNT_OPTIONS | grep -c gquota` -eq 0 -a `echo $MOUNT_OPTIONS | grep -c gquota` -eq 0 ] &&\
|
|
EXTRA_MOUNT_OPTIONS="-o pquota"
|
|
[ `echo $MOUNT_OPTIONS | grep -c gquota` -gt 0 -o `echo $MOUNT_OPTIONS | grep -c gquota` -gt 0 ] &&\
|
|
_notrun "Can't run with group quotas enabled"
|
|
|
|
if ! _scratch_mount "$EXTRA_MOUNT_OPTIONS" >$tmp.out 2>&1
|
|
then
|
|
cat $tmp.out
|
|
echo "!!! mount failed"
|
|
exit
|
|
fi
|
|
|
|
src/feature -p $SCRATCH_DEV
|
|
[ $? -ne 0 ] && _notrun "Installed kernel does not support project quotas"
|
|
|
|
|
|
mkdir $dir
|
|
$XFS_IO_PROG -r -c "chproj -R 1" -c "chattr -R +P" $dir
|
|
|
|
xfs_quota -D $tmp.projects -P $tmp.projid -x \
|
|
-c "limit -p bsoft=100m bhard=100m 1" $SCRATCH_DEV
|
|
xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -inN -p" $SCRATCH_DEV | tr -s '[:space:]'
|
|
touch $dir/1
|
|
touch $dir/2
|
|
cp $dir/2 $dir/3
|
|
|
|
xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -inN -p" $SCRATCH_DEV | tr -s '[:space:]'
|
|
|
|
if [ "$HOSTOS" == "IRIX" ] ; then
|
|
mkfile 1M $TEST_DIR/6
|
|
else
|
|
xfs_mkfile 1M $TEST_DIR/6
|
|
fi
|
|
|
|
#try cp to dir
|
|
cp $TEST_DIR/6 $dir/6
|
|
xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -inN -p" $SCRATCH_DEV | tr -s '[:space:]'
|
|
|
|
#try mv to dir
|
|
mv $TEST_DIR/6 $dir/7
|
|
|
|
xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -inN -p" $SCRATCH_DEV | tr -s '[:space:]'
|
|
|
|
# success, all done
|
|
status=0
|
|
exit
|