File: testresize.sh

package info (click to toggle)
ext2resize 1.1.17-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 772 kB
  • ctags: 678
  • sloc: ansic: 4,595; sh: 389; makefile: 56
file content (68 lines) | stat: -rwxr-xr-x 1,729 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/sh
#set -vx
PATH="`dirname $0`/../src:$PATH"
[ $# -lt 1 ] && echo "usage: $0 <dev> [max size]" && exit 1
DEV=$1
if [ -b $DEV ]; then
	BASE=`basename $DEV`
	MAJ=`ls -l $DEV | tr "," " " | awk '{ print $5 }'`
	MIN=`ls -l $DEV | awk '{ print $6 }'`
	MAX=`awk "/$MAJ  *$MIN / { print \\$3 }" /proc/partitions`
elif [ -f $DEV ]; then
	MAX=`ls -s $BASE | awk '{ print $1 }'`
elif [ "$2" ]; then
	MAX=$2
else
	echo "Can't find size of $DEV.  You must specify max size"
	exit 1
fi
MIN=4096
SIZE=`dumpe2fs -h $DEV | awk '/^Block count/ { print $3 }'`
[ -z "$SIZE" ] && echo "No ext2 filesystem on $DEV.  Do 'mke2fs $DEV'" && exit 1
BLKSZ=`dumpe2fs -h $DEV | awk '/^Block size/ { print $3 }'`
BLKSZ=`expr $BLKSZ / 1024`
MAX=`expr $MAX / $BLKSZ`
RC=0
if [ "`mount | grep $DEV`" ]; then
	RESIZE=ext2online
	SUB=0
else
	RESIZE=ext2resize
	SUB=8192
fi
ELOG=e2fsck.log
DLOG=dumpe2fs.log
FLOG=testresize.log

echo "TEST: $RESIZE on $DEV [ min $MIN, current $SIZE, max $MAX ]"
echo "TEST: press <enter> to continue"
read JUNK

e2fsck -n -f $DEV > $ELOG 2>&1
RC=$?
[ $RC -ne 0 ] && cat $ELOG && echo "TEST: e2fsck exit with $RC"

while [ $RC -eq 0 ]; do
	NEWSIZE=`expr $SIZE + $RANDOM - $SUB`
	[ $NEWSIZE -le $MIN ] && NEWSIZE=$MIN && SUB=8192
	if [ $NEWSIZE -ge $MAX ]; then
		if [ "$RESIZE" = "ext2online" ]; then
			echo "TEST: maximum size reached for online resizing"
			exit 0
		fi
		NEWSIZE=$MAX && SUB=40960
	fi
	echo "TEST: resize from $SIZE to $NEWSIZE"
	$RESIZE -v -d $DEV $NEWSIZE 2>&1
	RC=$?
	if [ $RC -ne 0 ]; then
		echo "TEST: $RESIZE exited with $RC"
	else
		e2fsck -n -f $DEV > $ELOG 2>&1
		RC=$?
		[ $RC -ne 0 ] && cat $ELOG && echo "TEST: e2fsck exit with $RC"
	fi
	SIZE=$NEWSIZE
done | tee $FLOG

dumpe2fs $DEV > $DLOG