Whamcloud - gitweb
e3151817dcd5c8ac2ca5f27dfcc88339b40eeaa5
[tools/e2fsprogs.git] / tests / f_large_dir / script
1 OUT=$test_name.log
2 EXP=$test_dir/expect
3 E2FSCK=../e2fsck/e2fsck
4
5 NAMELEN=255
6 DIRENT_SZ=8
7 BLOCKSZ=1024
8 DIRENT_PER_LEAF=$((BLOCKSZ / (NAMELEN + DIRENT_SZ)))
9 HEADER=32
10 INDEX_SZ=8
11 INDEX_L1=$(((BLOCKSZ - HEADER) / INDEX_SZ))
12 INDEX_L2=$(((BLOCKSZ - DIRENT_SZ) / INDEX_SZ))
13 ENTRIES=$((INDEX_L1 * INDEX_L2 * DIRENT_PER_LEAF))
14
15 $MKE2FS -b 1024 -O large_dir,uninit_bg,dir_nlink -F $TMPFILE 460800 \
16         > /dev/null 2>&1
17 {
18         echo "feature large_dir"
19         echo "mkdir /foo"
20         echo "cd /foo"
21         touch foofile
22         echo "write foofile foofile"
23         i=0
24         while test $i  -lt $ENTRIES ; do
25             if test $(( i % DIRENT_PER_LEAF )) -eq 0 ; then
26                 echo "expand ./"
27             fi
28             if test $(( i % 5000 )) -eq 0 -a $i -gt 0 ; then
29                 >&2 echo "$test_name: $i/$ENTRIES processed"
30             fi
31             printf "ln foofile %0255X\n" $i
32             i=$(($i + 1))
33         done
34 } | $DEBUGFS -w $TMPFILE > /dev/null 2>&1
35
36 $E2FSCK -yfD $TMPFILE > $OUT.new 2>&1
37 status=$?
38 echo Exit status is $status >> $OUT.new
39 sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" $OUT.new > $OUT
40 rm -f $OUT.new
41
42 cmp -s $OUT $EXP
43 RC=$?
44 if [ $RC -eq 0 ]; then
45         echo "$test_name: $test_description: ok"
46         touch $test_name.ok
47 else
48         echo "$test_name: $test_description: failed"
49         diff -u $EXP $OUT > $test_name.failed
50 fi