xref: /freebsd/tools/test/stress2/misc/msdos22.sh (revision 11f23d7c078b319285727d277f05b6962280bcce)
1aa029088SStefan Eßer#!/bin/sh
2aa029088SStefan Eßer
3aa029088SStefan Eßer# Test file operations using long random file names consisting only of ASCII characters
4aa029088SStefan Eßer
5aa029088SStefan EßerMDUNIT=10
6aa029088SStefan EßerFS=/mnt
7*11f23d7cSStefan EßerLOCALE=C
8aa029088SStefan EßerFILES=1000
9aa029088SStefan Eßer
10aa029088SStefan Eßerexport LANG=$LOCALE
11aa029088SStefan Eßer
12aa029088SStefan Eßerrandomfilename () {
13*11f23d7cSStefan Eßer	name=""
14aa029088SStefan Eßer	count=$(jot -r 1 10 3)
15aa029088SStefan Eßer	for r in $(jot -r $count 7 0); do
16aa029088SStefan Eßer		r=$(( r + 0 ))
17aa029088SStefan Eßer		c='_'
18aa029088SStefan Eßer		if [ $r -gt 0 ]; then
19aa029088SStefan Eßer			for i in $(jot $r); do
20aa029088SStefan Eßer				name="$name$i"
21aa029088SStefan Eßer			done
22aa029088SStefan Eßer		fi
23aa029088SStefan Eßer		count=$(( count - 1 ))
24aa029088SStefan Eßer		if [ "$count" -gt 0 ]; then
25aa029088SStefan Eßer			name="$name$c"
26aa029088SStefan Eßer		fi
27aa029088SStefan Eßer	done
28aa029088SStefan Eßer	echo "$name"
29aa029088SStefan Eßer}
30aa029088SStefan Eßer
31aa029088SStefan Eßer(
32aa029088SStefan Eßer	set -e
33aa029088SStefan Eßer
34aa029088SStefan Eßer	mdconfig -u $MDUNIT -t malloc -s 512m
35aa029088SStefan Eßer	newfs_msdos -c 8 -F 32 /dev/md$MDUNIT > /dev/null 2>&1
36aa029088SStefan Eßer	mkdir -p $FS
37aa029088SStefan Eßer	mount_msdosfs /dev/md$MDUNIT $FS
38aa029088SStefan Eßer
39aa029088SStefan Eßer	mkdir -p $FS/test
40aa029088SStefan Eßer	cd $FS/test
41aa029088SStefan Eßer
42aa029088SStefan Eßer	for i in $(jot $FILES); do
43*11f23d7cSStefan Eßer		testfiles="$testfiles
44*11f23d7cSStefan Eßer$(randomfilename)"
45aa029088SStefan Eßer	done
46aa029088SStefan Eßer
47*11f23d7cSStefan Eßer	testfiles=$(echo "$testfiles" | grep "." | sort -R | uniq)
48*11f23d7cSStefan Eßer
49aa029088SStefan Eßer	for f in $testfiles; do
50aa029088SStefan Eßer		echo "$f" > $f
51aa029088SStefan Eßer	done
52aa029088SStefan Eßer	for f in $(echo "$testfiles" | sort -R); do
53aa029088SStefan Eßer		cp $f $f.tmp
54aa029088SStefan Eßer	done
55aa029088SStefan Eßer	for f in $(echo "$testfiles" | sort -R); do
56aa029088SStefan Eßer		mv $f.tmp $f
57aa029088SStefan Eßer	done
58aa029088SStefan Eßer	for f in $(echo "$testfiles" | sort -R); do
59aa029088SStefan Eßer		rm $f
60aa029088SStefan Eßer	done
61aa029088SStefan Eßer)
62aa029088SStefan Eßer
63aa029088SStefan Eßerfailed=$?
64aa029088SStefan Eßer
65aa029088SStefan Eßercd
66aa029088SStefan Eßer
67aa029088SStefan Eßer[ "$failed" -ne 0 ] && ls $FS/test
68aa029088SStefan Eßer
69aa029088SStefan Eßerumount /dev/md$MDUNIT
70aa029088SStefan Eßer
71aa029088SStefan Eßer#[ "$failed" -ne 0 ] && hd /dev/md$MDUNIT > /tmp/msdos22.dump
72aa029088SStefan Eßer
73aa029088SStefan Eßerfsck_msdosfs -y /dev/md$MDUNIT
74aa029088SStefan Eßer
75aa029088SStefan Eßermdconfig -d -u $MDUNIT 2>/dev/null
76aa029088SStefan Eßer
77aa029088SStefan Eßerexit $failed
78