xref: /freebsd/tools/test/stress2/misc/unionfs18.sh (revision 02a2005a)
102a2005aSPeter Holm#!/bin/sh
202a2005aSPeter Holm
302a2005aSPeter Holm#
402a2005aSPeter Holm# Copyright (c) 2024 Peter Holm <pho@FreeBSD.org>
502a2005aSPeter Holm#
602a2005aSPeter Holm# SPDX-License-Identifier: BSD-2-Clause
702a2005aSPeter Holm#
802a2005aSPeter Holm
902a2005aSPeter Holm# Simple unionfs(8) + tmpfs test
1002a2005aSPeter Holm
1102a2005aSPeter Holm# "rmdir: d2: Directory not empty" seen.
1202a2005aSPeter Holm
1302a2005aSPeter Holm[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
1402a2005aSPeter Holm. ../default.cfg
1502a2005aSPeter Holm
1602a2005aSPeter Holmmp1=/mnt$mdstart
1702a2005aSPeter Holmmp2=/mnt$((mdstart + 1))
1802a2005aSPeter Holmmkdir -p $mp1 $mp2
1902a2005aSPeter Holmset -e
2002a2005aSPeter Holmfor i in $mp1 $mp2; do
2102a2005aSPeter Holm	mount | grep -q "on $i " && umount -f $i
2202a2005aSPeter Holmdone
2302a2005aSPeter Holm
2402a2005aSPeter Holmmd1=$mdstart
2502a2005aSPeter Holmmd2=$((md1 + 1))
2602a2005aSPeter Holmmp1=/mnt$md1
2702a2005aSPeter Holmmp2=/mnt$md2
2802a2005aSPeter Holmmkdir -p $mp1 $mp2
2902a2005aSPeter Holmfor i in $mp1 $mp2; do
3002a2005aSPeter Holm	mount | grep -q "on $i " && umount -f $i
3102a2005aSPeter Holmdone
3202a2005aSPeter Holm
3302a2005aSPeter Holmif [ $# -eq 0 ]; then
3402a2005aSPeter Holm	echo "tmpfs version"
3502a2005aSPeter Holm	mount -o size=4g -t tmpfs dummy $mp1
3602a2005aSPeter Holm	mount -o size=4g -t tmpfs dummy $mp2
3702a2005aSPeter Holmelse
3802a2005aSPeter Holm	echo "UFS version"
3902a2005aSPeter Holm	for i in $md1 $md2; do
4002a2005aSPeter Holm		mdconfig -l | grep -q md$i && mdconfig -d -u $i
4102a2005aSPeter Holm	done
4202a2005aSPeter Holm	mdconfig -a -t swap -s 4g -u $md1
4302a2005aSPeter Holm	mdconfig -a -t swap -s 4g -u $md2
4402a2005aSPeter Holm	newfs $newfs_flags -n md$md1 > /dev/null
4502a2005aSPeter Holm	newfs $newfs_flags -n md$md2 > /dev/null
4602a2005aSPeter Holm	mount /dev/md$md1 $mp1
4702a2005aSPeter Holm	mount /dev/md$md2 $mp2
4802a2005aSPeter Holmfi
4902a2005aSPeter Holm
5002a2005aSPeter Holmmount -t unionfs -o noatime $mp1 $mp2
5102a2005aSPeter Holmset +e
5202a2005aSPeter Holm
5302a2005aSPeter HolmN=3	# Tree depth
5402a2005aSPeter Holmhere=`pwd`
5502a2005aSPeter Holmcd $mp2
5602a2005aSPeter Holmmkdir dir; cd dir
5702a2005aSPeter Holmfor j in `seq 1 $N`; do
5802a2005aSPeter Holm	mkdir d$j && cd d$j
5902a2005aSPeter Holmdone
6002a2005aSPeter Holmfor j in `seq $N 1`; do
6102a2005aSPeter Holm	cd .. && rmdir d$j
6202a2005aSPeter Holmdone
6302a2005aSPeter Holmcd ..
6402a2005aSPeter Holmrmdir dir || { s=1; find dir -ls; }
6502a2005aSPeter Holmcd $here
6602a2005aSPeter Holm
6702a2005aSPeter Holmwhile mount | grep -Eq "on $mp2 .*unionfs"; do
6802a2005aSPeter Holm	umount $mp2 && break
6902a2005aSPeter Holm	sleep 5
7002a2005aSPeter Holmdone
7102a2005aSPeter Holmumount $mp2
7202a2005aSPeter Holmumount $mp1
7302a2005aSPeter Holmexit $s
74