[BACK]Return to common.quota CVS log [TXT][DIR] Up to [Development] / xfs-cmds / xfstests

File: [Development] / xfs-cmds / xfstests / common.quota (download)

Revision 1.14, Tue May 20 23:51:40 2003 UTC (14 years, 5 months ago) by nstraz
Branch: MAIN
Changes since 1.13: +1 -1 lines

Add some code to limit the repquota output to just the local entries and not
the evil NIS entries.  This allows me to run the tests in Eagan with NIS
enabled.
Add a parameter to _filter_repquota to limit the output to $1 lines

##/bin/sh
#
# Functions useful for quota tests
# 
# Copyright (c) 2000-2001 Silicon Graphics, Inc.  All Rights Reserved.
# 
# This program is free software; you can redistribute it and/or modify it
# under the terms of version 2 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.
# 
# Further, this software is distributed without any warranty that it is
# free of the rightful claim of any third person regarding infringement
# or the like.  Any license provided herein, whether implied or
# otherwise, applies only to this software file.  Patent licenses, if
# any, provided herein do not apply to combinations of this program with
# other software, or any other product whatsoever.
# 
# You should have received a copy of the GNU General Public License along
# with this program; if not, write the Free Software Foundation, Inc., 59
# Temple Place - Suite 330, Boston MA 02111-1307, USA.
# 
# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
# Mountain View, CA  94043, or:
# 
# http://www.sgi.com 
# 
# For further information regarding this notice, see: 
# 
# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
#

# 
# checks that the XFS quota support in the kernel is enabled
# and that we have valid quota user tools installed.
# 
_require_quota()
{
    src/feature -q $TEST_DEV
    [ $? -ne 0 ] && _notrun "Installed kernel does not support XFS quota"

    [ ! -x /sbin/quotaon ] && _notrun "Quota user tools not installed"

    /sbin/quotaon -x 2>&1 | grep "option requires an argument -- x" >/dev/null
    [ $? -ne 0 ] && _notrun "Installed quota tools do not support XFS"
}

# create a file as a specific user (uid)
# takes filename, id, type (u/g), blocksize, blockcount
# 
_file_as_id()
{
    [ $# != 5 ] && _notrun "broken call to _file_as_id in test $seq"

    if [ $3 = u ]
    then
	magik='$>'	# perlspeak for effective uid
    elif [ $3 = g ]
    then
	magik='$)'	# perlspeak for effective gid
    else
	_notrun "broken type in call to _file_as_id in test $seq"
    fi

    perl <<EOF >/dev/null 2>&1
	\$| = 1;
	$magik = $2;
	exec "dd if=/dev/zero of=$1 bs=$4 count=$5";
EOF
# for debugging the above euid change, try... [need write in cwd]
#	exec "dd if=/dev/zero of=$1 bs=$4 count=$5 >>$seq.full 2>&1";
}

_choose_uid()
{
    perl -ne '@a = split(/:/); END { printf "id=%d name=%s\n", $a[2],$a[0] }' \
	/etc/passwd
}

_choose_gid()
{
    perl -ne '@a = split(/:/); END { printf "id=%d name=%s\n", $a[2],$a[0] }' \
	/etc/group
}

_filter_repquota()
{
    head -$1 | perl -ne "
	s/^(\w+)\s+([-|+])/[NAME]    \2/g;
	s,$SCRATCH_DEV,[DEVICE],g;
	print"
}

_qmount()
{
    umount $SCRATCH_DEV >/dev/null 2>&1
    mount -t xfs $SCRATCH_DEV $SCRATCH_MNT || _fail "qmount failed"
    chmod ugo+rwx $SCRATCH_MNT
    [ -x /usr/sbin/quot ] && quot $SCRATCH_MNT >>$seq.full 2>&1
}

# make sure this script returns success
/bin/true