xfststests 226: test for prealloc/delalloc/reserved space recapture
authorEric Sandeen <sandeen@sandeen.net>
Fri, 16 Apr 2010 18:20:54 +0000 (13:20 -0500)
committerEric Sandeen <sandeen@sandeen.net>
Fri, 16 Apr 2010 18:20:54 +0000 (13:20 -0500)
Test writing and removing a file in a loop; filesize is 64m,
filesystem size is 256m.  Loop 16 times each for buffered and
direct.

ext4 hits enospc after a couple loops.

Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Reviewed-by: Alex Elder <aelder@sgi.com>
226 [new file with mode: 0755]
226.out [new file with mode: 0644]
group

diff --git a/226 b/226
new file mode 100755 (executable)
index 0000000..205343e
--- /dev/null
+++ b/226
@@ -0,0 +1,74 @@
+#! /bin/sh
+# FS QA Test No. 226
+#
+# Test for prealloc space leaks by rewriting the same file in a loop
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+#-----------------------------------------------------------------------
+#
+# creator
+owner=sandeen@sandeen.net
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+
+_supported_fs generic
+_supported_os Linux IRIX
+_require_scratch
+
+# real QA test starts here
+rm -f $seq.full
+
+umount $SCRATCH_DEV 2>/dev/null
+echo "--> mkfs 256m filesystem"
+_scratch_mkfs_sized `expr 256 \* 1024 \* 1024` >> $seq.full 2>&1
+_scratch_mount
+
+loops=16
+
+echo "--> $loops buffered 64m writes in a loop"
+for I in `seq 1 $loops`; do
+       echo -n "$I "
+       xfs_io -F -f -c 'pwrite 0 64m' $SCRATCH_MNT/test >> $seq.full
+       rm -f $SCRATCH_MNT/test
+done
+
+echo
+umount $SCRATCH_DEV
+_scratch_mount
+
+echo "--> $loops direct 64m writes in a loop"
+for I in `seq 1 $loops`; do
+       echo -n "$I "
+       xfs_io -F -f -d -c 'pwrite 0 64m' $SCRATCH_MNT/test >> $seq.full
+       rm -f $SCRATCH_MNT/test 
+done
+
+echo
+umount $SCRATCH_DEV
+
+status=0
+exit
diff --git a/226.out b/226.out
new file mode 100644 (file)
index 0000000..b5f60bf
--- /dev/null
+++ b/226.out
@@ -0,0 +1,6 @@
+QA output created by 226
+--> mkfs 256m filesystem
+--> 16 buffered 64m writes in a loop
+1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
+--> 16 direct 64m writes in a loop
+1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
diff --git a/group b/group
index 8d4a83a6f0dd3696a7617034142bcb3f1a255fda..7ec18a835278828a5cb07f12493f0de2f94b873a 100644 (file)
--- a/group
+++ b/group
@@ -339,3 +339,4 @@ deprecated
 223 auto quick
 224 auto
 225 auto quick
+226 auto enospc