xref: /dragonfly/test/stress/stress2/misc/quota9.sh (revision 279dd846)
1#!/bin/sh
2
3#
4# Copyright (c) 2008 Peter Holm
5# All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions
9# are met:
10# 1. Redistributions of source code must retain the above copyright
11#    notice, this list of conditions and the following disclaimer.
12# 2. Redistributions in binary form must reproduce the above copyright
13#    notice, this list of conditions and the following disclaimer in the
14#    documentation and/or other materials provided with the distribution.
15#
16# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26# SUCH DAMAGE.
27#
28# $FreeBSD$
29#
30
31# Test if quotacheck reports actual usage
32
33. ../default.cfg
34
35export tmp=/tmp/$(basename $0).$$
36export D=$diskimage
37
38qc() {
39	quotacheck -v $1 > $tmp 2>&1
40	grep -q fixed $tmp && cat $tmp
41}
42
43if [ $# -eq 0 ]; then
44	trap "rm -f $D $tmp" 0
45	[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
46
47	dede $D 1m 50 || exit 1
48
49	mount | grep "${mntpoint}" | grep -q md${mdstart} && umount -f ${mntpoint}
50	mdconfig -l | grep -q md${mdstart} &&  mdconfig -d -u ${mdstart}
51
52	mdconfig -a -t vnode -f $D -u ${mdstart}
53	bsdlabel -w md${mdstart} auto
54	newfs -U  md${mdstart}${part} > /dev/null
55	echo "/dev/md${mdstart}${part} ${mntpoint} ufs rw,userquota 2 2" >> /etc/fstab
56	mount ${mntpoint}
57	mkdir ${mntpoint}/stressX
58	chown $testuser ${mntpoint}/stressX
59	set `df -ik ${mntpoint} | tail -1 | awk '{print $4,$7}'`
60	export KBLOCKS=$1
61	export INODES=$2
62
63	export QK=$((KBLOCKS / 2))
64	export QI=$((INODES / 2))
65	edquota -u -f ${mntpoint} -e ${mntpoint}:$((QK - 50)):$QK:$((QI - 50 )):$QI ${testuser} > /dev/null 2>&1
66	quotaon ${mntpoint}
67
68#	quotaoff ${mntpoint};umount ${mntpoint}; mount ${mntpoint};quotaon ${mntpoint}
69#	df -i ${mntpoint}
70#	repquota   -v ${mntpoint}
71	qc            ${mntpoint}
72#	repquota   -v ${mntpoint}
73#	echo "- Start test -"
74
75	su ${testuser} $0 xxx
76	du -k /mnt/stressX
77
78#	quotaoff ${mntpoint};umount ${mntpoint}; mount ${mntpoint};quotaon ${mntpoint}
79#	df -i ${mntpoint}
80#	repquota   -v ${mntpoint}
81	qc            ${mntpoint}
82#	repquota   -v ${mntpoint}
83
84	sed -i -e "/md${mdstart}${part}/d" /etc/fstab
85	while mount | grep -q ${mntpoint}; do
86		umount $([ $((`date '+%s'` % 2)) -eq 0 ] && echo "-f" || echo "") ${mntpoint} > /dev/null 2>&1
87	done
88	mdconfig -d -u ${mdstart}
89	rm -f $D
90else
91	for i in `jot 20`; do
92		dede ${mntpoint}/stressX/d$i 1m 1
93	done
94fi
95