]> www.infradead.org Git - users/hch/xfstests-dev.git/commitdiff
add test 201: btree corruption without CONFIG_LBD
authorChristoph Hellwig <hch@lst.de>
Thu, 22 Jan 2009 20:19:14 +0000 (21:19 +0100)
committerChristoph Hellwig <hch@brick.lst.de>
Thu, 22 Jan 2009 20:19:14 +0000 (21:19 +0100)
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
201 [new file with mode: 0644]
201.out [new file with mode: 0644]
group

diff --git a/201 b/201
new file mode 100644 (file)
index 0000000..9d5cbd7
--- /dev/null
+++ b/201
@@ -0,0 +1,87 @@
+#! /bin/sh
+# FS QA Test No. 201
+#
+# Test out the infamout xfs_btree_delrec corruption.
+#
+# Only happens on 32-bit kernels without CONFIG_LBD, but it should be harmless
+# to run this everywhere.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2001 Christoph Hellwig.
+#-----------------------------------------------------------------------
+#
+# creator
+owner=hch@lst.de
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+do_pwrite()
+{
+       offset=`expr $1 \* 512`
+       end=`expr $2 \* 512`
+       length=`expr $end - $offset`
+
+       xfs_io -d -f $file -c "pwrite $offset $length" >/dev/null
+}
+
+
+
+_cleanup()
+{
+       umount $SCRATCH_MNT
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs xfs
+_supported_os Linux
+
+file=$SCRATCH_MNT/f
+
+_require_scratch
+
+_scratch_mkfs_xfs >/dev/null 2>&1
+_scratch_mount
+
+# Create a fragmented file
+do_pwrite 30792 31039
+do_pwrite 30320 30791
+do_pwrite 29688 30319
+do_pwrite 29536 29687
+do_pwrite 27216 29535
+do_pwrite 24368 27215
+do_pwrite 21616 24367
+do_pwrite 20608 21615
+do_pwrite 19680 20607
+do_pwrite 19232 19679
+do_pwrite 17840 19231
+do_pwrite 16928 17839
+do_pwrite 15168 16927
+do_pwrite 14048 15167
+do_pwrite 12152 14047
+do_pwrite 11344 12151
+do_pwrite 8792 11343
+do_pwrite 6456 8791
+do_pwrite 5000 6455
+do_pwrite 1728 4999
+do_pwrite 0 1727
+
+sync
+sync
+
+# and truncate it again
+> $SCRATCH_MNT/bigfile
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/201.out b/201.out
new file mode 100644 (file)
index 0000000..bccabd5
--- /dev/null
+++ b/201.out
@@ -0,0 +1,2 @@
+QA output created by 201
+*** done
diff --git a/group b/group
index a5f420837ec6f2318a88b14ebd2ee3a9fa13f83d..e9d450d9930500dc46ae2097e345ca02edb3d793 100644 (file)
--- a/group
+++ b/group
@@ -302,3 +302,4 @@ atime
 197 dir auto
 199 mount auto
 200 mount auto
+201 metadata auto