svn commit: r218087 - projects/stress2/misc
Peter Holm
pho at FreeBSD.org
Sun Jan 30 12:12:25 UTC 2011
Author: pho
Date: Sun Jan 30 12:12:25 2011
New Revision: 218087
URL: http://svn.freebsd.org/changeset/base/218087
Log:
Added test scenarios for the newfs(8) option TRIM.
Added:
projects/stress2/misc/trim.sh (contents, props changed)
projects/stress2/misc/trim2.sh (contents, props changed)
projects/stress2/misc/trim3.sh (contents, props changed)
projects/stress2/misc/trim4.sh (contents, props changed)
Added: projects/stress2/misc/trim.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/stress2/misc/trim.sh Sun Jan 30 12:12:25 2011 (r218087)
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2011 Peter Holm <pho at FreeBSD.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Run with marcus.cfg on a malloc backed MD with option trim.
+
+. ../default.cfg
+
+[ "`sysctl vm.md_malloc_wait | awk '{print $NF}'`" != "1" ] && \
+ echo "sysctl vm.md_malloc_wait should be set to 1"
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+
+size="128m"
+[ `uname -m` = "amd64" ] && size="1g"
+[ $# -eq 0 ] && trim=-t
+n=0
+for flag in '' '-U' '-U'; do
+ n=$((n + 1))
+ echo "mdconfig -a -t malloc -o reserve -s $size -u $mdstart"
+ mdconfig -a -t malloc -o reserve -s $size -u $mdstart || exit 1
+ bsdlabel -w md$mdstart auto
+
+ echo "newfs $trim $flag md${mdstart}$part"
+ newfs $trim $flag md${mdstart}$part > /dev/null
+ [ $n -eq 3 ] && tunefs -? 2>&1 | grep -q "j enable" && \
+ tunefs -j enable /dev/md${mdstart}$part
+
+ mount /dev/md${mdstart}$part $mntpoint
+ chmod 777 $mntpoint
+
+ export runRUNTIME=10m
+ export RUNDIR=$mntpoint/stressX
+
+ su $testuser -c 'cd ..; ./run.sh marcus.cfg' > /dev/null 2>&1
+
+ while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+ done
+ dumpfs /dev/md${mdstart}$part > /tmp/dumpfs.1
+ sleep 1
+ fsck -t ufs -y /dev/md${mdstart}$part > /tmp/fsck.log 2>&1
+ dumpfs /dev/md${mdstart}$part > /tmp/dumpfs.2
+
+ diff -c /tmp/dumpfs.1 /tmp/dumpfs.2 || cat /tmp/fsck.log
+ mdconfig -d -u $mdstart
+done
+rm -f /tmp/fsck.log /tmp/dumpfs.?
Added: projects/stress2/misc/trim2.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/stress2/misc/trim2.sh Sun Jan 30 12:12:25 2011 (r218087)
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2011 Peter Holm <pho at FreeBSD.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Run a test on a 128 MB malloc backed MD with UFS SU fs with option trim.
+# Verify that deleted records are gone.
+
+. ../default.cfg
+
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -a -t malloc -o reserve -s 128m -u $mdstart || exit 1
+bsdlabel -w md$mdstart auto
+[ $# -eq 0 ] && trim=-t
+newfs $trim -U md${mdstart}$part > /dev/null
+mount /dev/md${mdstart}$part $mntpoint
+
+echo "This is a Trim (TRIM) test." >> $mntpoint/file
+for i in `jot 20`; do
+ cat $mntpoint/file $mntpoint/file > $mntpoint/file2
+ mv $mntpoint/file2 $mntpoint/file
+done
+rm $mntpoint/file
+
+while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+done
+
+grep -a -qm1 Trim /dev/md${mdstart}$part && echo "Test failed"
+
+fsck -t ufs -y /dev/md${mdstart}$part 2>&1 | tee /tmp/fsck.log | \
+ grep -v "IS CLEAN" | egrep -q -m1 "[A-Z][A-Z]" && \
+ cat /tmp/fsck.log
+mdconfig -d -u $mdstart
+rm -f /tmp/fsck.log
Added: projects/stress2/misc/trim3.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/stress2/misc/trim3.sh Sun Jan 30 12:12:25 2011 (r218087)
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2011 Peter Holm <pho at FreeBSD.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Run with marcus.cfg on a 1 GB swap backed MD with option trim.
+# A variation of trim.sh
+
+. ../default.cfg
+
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+
+size="1g"
+[ $# -eq 0 ] && trim=-t
+n=0
+for flag in '' '-U' '-U'; do
+ n=$((n + 1))
+ echo "mdconfig -a -t swap -s $size -u $mdstart"
+ mdconfig -a -t swap -s $size -u $mdstart || exit 1
+ bsdlabel -w md$mdstart auto
+
+ echo "newfs $trim $flag md${mdstart}$part"
+ newfs $trim $flag md${mdstart}$part > /dev/null
+ [ $n -eq 3 ] && tunefs -? 2>&1 | grep -q "j enable" && \
+ tunefs -j enable /dev/md${mdstart}$part
+
+ mount /dev/md${mdstart}$part $mntpoint
+ chmod 777 $mntpoint
+
+ export runRUNTIME=10m
+ export RUNDIR=$mntpoint/stressX
+
+ su $testuser -c 'cd ..; ./run.sh marcus.cfg' > /dev/null 2>&1
+
+ while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+ done
+ dumpfs /dev/md${mdstart}$part > /tmp/dumpfs.1
+ sleep 1
+ fsck -t ufs -y /dev/md${mdstart}$part > /tmp/fsck.log 2>&1
+ dumpfs /dev/md${mdstart}$part > /tmp/dumpfs.2
+
+ diff -c /tmp/dumpfs.1 /tmp/dumpfs.2 || cat /tmp/fsck.log
+ mdconfig -d -u $mdstart
+done
+rm -f /tmp/fsck.log /tmp/dumpfs.?
Added: projects/stress2/misc/trim4.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/stress2/misc/trim4.sh Sun Jan 30 12:12:25 2011 (r218087)
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2011 Peter Holm <pho at FreeBSD.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Run with marcus.cfg on a 1 GB swap backed MD with option trim.
+# SU+J FS corruption seen with option trim.
+
+. ../default.cfg
+
+tunefs -? 2>&1 | grep "j enable" || exit 1
+
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+
+size="1g"
+[ $# -eq 0 ] && trim=-t
+flag="-U"
+for i in `jot 6`; do
+ echo "Test #$i `date '+%T'`"
+ echo "mdconfig -a -t swap -s $size -u $mdstart"
+ mdconfig -a -t swap -s $size -u $mdstart || exit 1
+ bsdlabel -w md$mdstart auto
+
+ echo "newfs $trim $flag md${mdstart}$part"
+ newfs $trim $flag md${mdstart}$part > /dev/null
+ tunefs -j enable /dev/md${mdstart}$part
+
+ mount /dev/md${mdstart}$part $mntpoint
+ chmod 777 $mntpoint
+
+ export runRUNTIME=5m
+ export RUNDIR=$mntpoint/stressX
+
+ su $testuser -c 'cd ..; ./run.sh marcus.cfg' > /dev/null 2>&1
+
+ while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+ done
+ dumpfs /dev/md${mdstart}$part > /tmp/dumpfs.1
+ sleep 1
+ fsck -t ufs -y /dev/md${mdstart}$part > /tmp/fsck.log 2>&1
+ dumpfs /dev/md${mdstart}$part > /tmp/dumpfs.2
+
+ if grep -q "FALLBACK TO FULL FSCK" /tmp/fsck.log; then
+ diff -c /tmp/dumpfs.1 /tmp/dumpfs.2
+ cat /tmp/fsck.log
+ exit 1
+ fi
+ mdconfig -d -u $mdstart
+done
+rm -f /tmp/fsck.log /tmp/dumpfs.?
More information about the svn-src-projects
mailing list