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