]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
Test to expose log replay bug.
authorLachlan McIlroy <lachlan@sgi.com>
Fri, 28 Sep 2007 16:06:31 +0000 (16:06 +0000)
committerLachlan McIlroy <lachlan@sgi.com>
Fri, 28 Sep 2007 16:06:31 +0000 (16:06 +0000)
Merge of master-melb:xfs-cmds:29801a by kenmcd.

  Test to expose log replay bug.

182 [new file with mode: 0644]
182.out [new file with mode: 0644]
group

diff --git a/182 b/182
new file mode 100644 (file)
index 0000000..eae05c3
--- /dev/null
+++ b/182
@@ -0,0 +1,99 @@
+#! /bin/sh
+# FSQA Test No. 182
+#
+# Test for NULL files problem
+# test inode size is on disk after sync - expose log replay bug
+#
+#-----------------------------------------------------------------------
+#  Copyright (c) 2006 Silicon Graphics, Inc.  All Rights Reserved.
+#-----------------------------------------------------------------------
+#
+# creator
+owner=lachlan@sgi.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1    # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs xfs
+_supported_os Linux IRIX
+
+_setup_testdir
+_require_scratch
+_scratch_mkfs_xfs >/dev/null 2>&1
+_scratch_mount
+
+_check_files()
+{
+       # check file size and contents
+       i=1;
+       while [ $i -lt 1000 ]
+       do
+               file=$SCRATCH_MNT/$i
+               # if file is missing then sync failed
+               if [ -e $file ]
+               then
+                       # if file size is not 10MB then sync failed
+                       if [ `stat -c %s $file` -eq 32768 ]
+                       then
+                               # if file has non-zero size but no extents then it's contents will be NULLs, bad.
+                               if xfs_bmap $file | grep 'no extents' > /dev/null
+                               then
+                                       echo corrupt file $file - non-zero size but no extents
+                               else
+                                       rm -f $file
+                               fi
+                       else
+                               echo file $file has incorrect size - sync failed
+                       fi
+               else
+                       echo file $file missing - sync failed
+               fi
+               i=`expr $i + 1`
+       done
+}
+
+# create files and sync them
+i=1;
+while [ $i -lt 1000 ]
+do
+       file=$SCRATCH_MNT/$i
+       xfs_io -f -c "pwrite -b 32k -S 0xff 0 32k" $file > /dev/null
+       if [ $? -ne 0 ]
+       then
+               echo error creating/writing file $file
+               exit
+       fi
+       i=`expr $i + 1`
+done
+
+# sync, then shutdown immediately after, then remount and test
+sync
+src/godown $SCRATCH_MNT
+umount $SCRATCH_MNT
+_scratch_mount
+umount $SCRATCH_MNT
+if [ ! _check_scratch_fs ]
+then
+       echo error detected in filesystem
+       exit
+fi
+_scratch_mount
+_check_files
+
+status=0
+exit
diff --git a/182.out b/182.out
new file mode 100644 (file)
index 0000000..5e665c8
--- /dev/null
+++ b/182.out
@@ -0,0 +1 @@
+QA output created by 182
diff --git a/group b/group
index 8b5bb0bc5c6e82d485c0563a4e2b284270cd5cff..6ed7069f8127a95e59fcac44cca81e1e3ff52678 100644 (file)
--- a/group
+++ b/group
@@ -269,3 +269,4 @@ filestreams dgc@sgi.com
 179 metadata rw auto
 180 metadata rw auto
 181 log auto
+182 metadata rw auto