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