#! /bin/bash # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. # # FS QA Test No. 384 # # test to reproduce PV951636: # project quotas not updated if a file is mv'd into that directory # seq=`basename $0` seqres=$RESULT_DIR/$seq 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 / _scratch_unmount 2>/dev/null rm -f $tmp.* } trap "_cleanup; exit \$status" 0 1 2 3 15 # real QA test starts here _supported_fs generic _supported_os Linux _require_test _require_quota _require_xfs_quota_foreign _require_xfs_io_command "chproj" # we can't run with group quotas (on v4 xfs); the mount options for group # quotas will be filtered out by _qmount_option below. dir=$SCRATCH_MNT/project #project quota files cat >$tmp.projects <$tmp.projid </dev/null 2>&1 _scratch_enable_pquota _qmount_option "prjquota" _qmount _require_prjquota $SCRATCH_DEV report_quota() { $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \ -c "repquota -inN -p" $SCRATCH_DEV | \ tr -s '[:space:]' | _filter_project_quota } mkdir $dir $XFS_IO_PROG -r -c "chproj -R 1" -c "chattr -R +P" $dir $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \ -c "limit -p bsoft=100m bhard=100m 1" $SCRATCH_DEV report_quota touch $dir/1 touch $dir/2 cp $dir/2 $dir/3 report_quota xfs_mkfile 1M $TEST_DIR/6 #try cp to dir cp $TEST_DIR/6 $dir/6 report_quota #try mv to dir mv $TEST_DIR/6 $dir/7 report_quota # success, all done status=0 exit