aboutsummaryrefslogtreecommitdiff
path: root/tools/test/stress2/misc/rsync.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/test/stress2/misc/rsync.sh')
-rwxr-xr-xtools/test/stress2/misc/rsync.sh49
1 files changed, 49 insertions, 0 deletions
diff --git a/tools/test/stress2/misc/rsync.sh b/tools/test/stress2/misc/rsync.sh
new file mode 100755
index 000000000000..fa52f98c6f02
--- /dev/null
+++ b/tools/test/stress2/misc/rsync.sh
@@ -0,0 +1,49 @@
+#/bin/sh
+
+#
+# Copyright (c) 2025 Peter Holm <pho@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+[ -f "`which rsync`" ] || exit 0
+[ -d /usr/src/sys ] || exit 0
+
+set -eu
+prog=$(basename "$0" .sh)
+log=/tmp/$prog.log
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 15g -u $mdstart
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+mkdir -p $mntpoint/usr/src
+rsync -avrq /usr/src/sys $mntpoint/usr/src; s=$?
+if [ $s -eq 0 ]; then
+ (cd $mntpoint; umount $mntpoint > /dev/null 2>&1) # sync
+ rsync -avrq /usr/src/sys $mntpoint/usr/src; s=$?
+fi
+
+if [ $s -eq 0 ]; then
+ diff -rq /usr/src/sys $mntpoint/usr/src/sys > $log; s=$?
+ [ $s -ne 0 ] &&
+ { echo "/usr/src $mntpoint/usr/src differ!"; head -10 $log; }
+fi
+
+while mount | grep -q "on $mntpoint "; do
+ umount $mntpoint || break
+ sleep 1
+done
+if [ $s -eq 0 ]; then
+ fsck_ffs -fy /dev/md$mdstart > $log 2>&1; s=$?
+ grep -Eq "WAS MODIFIED" $log && { cat $log; s=1; }
+fi
+mdconfig -d -u $mdstart
+rm -f $log
+exit $s