xref: /freebsd/tools/test/stress2/misc/msdos13.sh (revision 4d846d260e2b9a3d4d0a701462568268cbfe7a5b)
122f5f4a1SPeter Holm#!/bin/sh
222f5f4a1SPeter Holm
322f5f4a1SPeter Holm#
4*4d846d26SWarner Losh# SPDX-License-Identifier: BSD-2-Clause
522f5f4a1SPeter Holm#
622f5f4a1SPeter Holm# Copyright (c) 2021 Peter Holm
722f5f4a1SPeter Holm#
822f5f4a1SPeter Holm# Redistribution and use in source and binary forms, with or without
922f5f4a1SPeter Holm# modification, are permitted provided that the following conditions
1022f5f4a1SPeter Holm# are met:
1122f5f4a1SPeter Holm# 1. Redistributions of source code must retain the above copyright
1222f5f4a1SPeter Holm#    notice, this list of conditions and the following disclaimer.
1322f5f4a1SPeter Holm# 2. Redistributions in binary form must reproduce the above copyright
1422f5f4a1SPeter Holm#    notice, this list of conditions and the following disclaimer in the
1522f5f4a1SPeter Holm#    documentation and/or other materials provided with the distribution.
1622f5f4a1SPeter Holm#
1722f5f4a1SPeter Holm# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1822f5f4a1SPeter Holm# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1922f5f4a1SPeter Holm# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2022f5f4a1SPeter Holm# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2122f5f4a1SPeter Holm# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2222f5f4a1SPeter Holm# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2322f5f4a1SPeter Holm# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2422f5f4a1SPeter Holm# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2522f5f4a1SPeter Holm# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2622f5f4a1SPeter Holm# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2722f5f4a1SPeter Holm# SUCH DAMAGE.
2822f5f4a1SPeter Holm#
2922f5f4a1SPeter Holm
3022f5f4a1SPeter Holm# Simple msdosfs rename example
3122f5f4a1SPeter Holm
3222f5f4a1SPeter Holm[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
3322f5f4a1SPeter Holm
3422f5f4a1SPeter Holm. ../default.cfg
3522f5f4a1SPeter Holm
3622f5f4a1SPeter Holm[ -x /sbin/mount_msdosfs ] || exit 0
3722f5f4a1SPeter Holmlog=/tmp/msdos13.log
3822f5f4a1SPeter Holm
3922f5f4a1SPeter Holmset -e
4022f5f4a1SPeter Holmmount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
4122f5f4a1SPeter Holm[ -c /dev/md$mdstart ] &&  mdconfig -d -u $mdstart
4222f5f4a1SPeter Holmmdconfig -a -t swap -s 2g -u $mdstart
43608c97bfSPeter Holmgpart create -s bsd md$mdstart > /dev/null
44608c97bfSPeter Holmgpart add -t freebsd-ufs md$mdstart > /dev/null
45608c97bfSPeter Holmpart=a
4622f5f4a1SPeter Holmnewfs_msdos -F 32 -b 8192 /dev/md$mdstart$part > /dev/null
4722f5f4a1SPeter Holmmount -t msdosfs /dev/md$mdstart$part $mntpoint
4822f5f4a1SPeter Holmmkdir $mntpoint/stressX
4922f5f4a1SPeter Holmchmod 0777 $mntpoint/stressX
5022f5f4a1SPeter Holmset +e
5122f5f4a1SPeter Holm
5222f5f4a1SPeter Holmhere=`pwd`
5322f5f4a1SPeter Holmcd $mntpoint/stressX
5422f5f4a1SPeter HolmN=4000
5522f5f4a1SPeter Holms=0
5622f5f4a1SPeter Holmsort /dev/zero & pid=$!
5722f5f4a1SPeter Holmsleep 2
5822f5f4a1SPeter Holmfor j in `jot $N`; do
5922f5f4a1SPeter Holm	touch f$i-$j
6022f5f4a1SPeter Holmdone
6122f5f4a1SPeter Holmfor j in `jot $N`; do
6222f5f4a1SPeter Holm	mv f$i-$j g$i-$j
6322f5f4a1SPeter Holm	[ -f f$i-$j ] && s=1
6422f5f4a1SPeter Holmdone
6522f5f4a1SPeter Holmfor j in `jot $N`; do
6622f5f4a1SPeter Holm	mv g$i-$j f$i-$j
6722f5f4a1SPeter Holmdone
6822f5f4a1SPeter Holmfor j in `jot $N`; do
6922f5f4a1SPeter Holm	rm f$i-$j
7022f5f4a1SPeter Holmdone
7122f5f4a1SPeter Holmkill $pid
7222f5f4a1SPeter Holmwait
7322f5f4a1SPeter Holmleftover=`find . -type f | wc -l`
7422f5f4a1SPeter Holmif [ $leftover -gt 0 ]; then
7522f5f4a1SPeter Holm	echo "Unexpected leftover files:"
7622f5f4a1SPeter Holm	s=2
7722f5f4a1SPeter Holm	find . -type f | head -5
7822f5f4a1SPeter Holmfi
7922f5f4a1SPeter Holmcd $here
8022f5f4a1SPeter Holm
8122f5f4a1SPeter Holmfor i in `jot 6`; do
8222f5f4a1SPeter Holm	mount | grep -q "on $mntpoint " || break
8322f5f4a1SPeter Holm	umount $mntpoint && break || sleep 10
8422f5f4a1SPeter Holm	[ $i -eq 6 ] &&
8522f5f4a1SPeter Holm	    { echo FATAL; fstat -mf $mntpoint; exit 1; }
8622f5f4a1SPeter Holmdone
8722f5f4a1SPeter Holmfsck -t msdosfs -y /dev/md$mdstart$part > $log 2>&1
8822f5f4a1SPeter Holmif egrep -q "BAD|INCONSISTENCY|MODIFIED" $log; then
8922f5f4a1SPeter Holm	echo "fsck problems:"
9022f5f4a1SPeter Holm	cat $log
9122f5f4a1SPeter Holm	s=3
9222f5f4a1SPeter Holm
9322f5f4a1SPeter Holm	mount -t msdosfs /dev/md$mdstart$part $mntpoint || exit 1
9422f5f4a1SPeter Holm	ls -lR $mntpoint | head -5
9522f5f4a1SPeter Holm	umount $mntpoint
9622f5f4a1SPeter Holmfi
9722f5f4a1SPeter Holmmdconfig -d -u $mdstart
9822f5f4a1SPeter Holmrm -f $log
9922f5f4a1SPeter Holmexit $s
100