Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 May 2018 11:31:32 +0000 (UTC)
From:      Peter Holm <pho@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r333578 - user/pho/stress2/misc
Message-ID:  <201805131131.w4DBVWf7031450@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pho
Date: Sun May 13 11:31:32 2018
New Revision: 333578
URL: https://svnweb.freebsd.org/changeset/base/333578

Log:
  Added a simple sparse read test for r333576: "Detect and optimize reads from
  the hole on UFS".
  
  Sponsored by:	Dell EMC Isilon

Added:
  user/pho/stress2/misc/sparse.sh   (contents, props changed)

Added: user/pho/stress2/misc/sparse.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/pho/stress2/misc/sparse.sh	Sun May 13 11:31:32 2018	(r333578)
@@ -0,0 +1,76 @@
+#!/bin/sh
+#
+# Copyright (c) 2018 Dell EMC Isilon
+# 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 unmodified, 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$
+#
+
+# Test sparse file read
+# No problems seen.
+
+. ../default.cfg
+
+set -e
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] &&  mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 5g -u $mdstart
+bsdlabel -w md$mdstart auto
+newfs $newfs_flags md${mdstart}$part > /dev/null
+mount /dev/md${mdstart}$part $mntpoint
+set +e
+
+in=$mntpoint/in
+out=$mntpoint/out
+
+size=`jot -r 1 1 2048`
+size=$((size * 1024 * 1024))
+truncate -s $size $in
+
+for i in `jot $(jot -r 1 10 100)`; do
+	bs=`jot -r 1 1 4096`
+	pos=`jot -r 1 0 $((size - bs))`
+	pos=$((pos / bs)) # in blocks
+	[ $((pos + bs)) -gt $size ] && { echo "seek error"; exit 1; }
+	dd if=/dev/random of=$in seek=$pos bs=$bs count=1 conv=notrunc \
+	    status=none
+done
+[ `stat -f%z $in` -ne $size ] && { ls -l $in; exit 1; }
+
+cp $in $out
+md1=`md5 < $in`
+md2=`md5 < $out`
+[ $md1 == $md2 ] && s=0 ||
+	{ echo "md5 differs: $in: $md1, $out: $md2"; s=1
+	ls -l $in $out; }
+rm -f $in $out
+for i in `jot 6`; do
+	mount | grep -q "on $mntpoint " || break
+	umount $mntpoint && break || sleep 10
+	[ $i -eq 6 ] &&
+	    { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+mdconfig -d -u $mdstart
+exit $s



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805131131.w4DBVWf7031450>