From a4419806879eb76d96c6403886102e9eeaf0d796 Mon Sep 17 00:00:00 2001 From: Lachlan McIlroy Date: Sat, 2 Dec 2006 02:52:30 +0000 Subject: [PATCH] Test for NULL files problem. Merge of master-melb:xfs-cmds:27607a by kenmcd. Test for NULL files problem. --- 137 | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 137.out | 1 + group | 1 + 3 files changed, 94 insertions(+) create mode 100755 137 create mode 100644 137.out diff --git a/137 b/137 new file mode 100755 index 00000000..3921078a --- /dev/null +++ b/137 @@ -0,0 +1,92 @@ +#! /bin/sh +# FSQA Test No. 133 +# +# Test for NULL files problem +# +#----------------------------------------------------------------------- +# 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 + +# create files +i=1; +while [ $i -lt 1000 ] +do + file=$SCRATCH_MNT/$i + xfs_io -f -c "pwrite -b 64k -S 0xff 0 64k" $file > /dev/null + i=`expr $i + 1` +done + +# give the system a chance to write something out +sleep 10 + +src/godown $SCRATCH_MNT + +umount $SCRATCH_MNT +_scratch_mount + +# check file size and contents +i=1; +while [ $i -lt 1000 ] +do + file=$SCRATCH_MNT/$i + # if file does not exist, the create was not logged, skip it + if [ -e $file ] + then + # if file size is zero it cannot be corrupt, skip it + if [ -s $file ] + 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 + elif xfs_bmap $file | grep 'hole' > /dev/null + then + echo corrupt file $file - contains holes + else + for byte in `od -td1 -w16 -v $file | tr -s ' ' | cut -d ' ' -f 2-17` + do + # each byte in the file must not be 0 + if [ $byte -eq 0 ] + then + echo corrupt file $file - NULLs found + break; + fi + done + fi + fi + rm -f $file + fi + i=`expr $i + 1` +done + +status=0 +exit diff --git a/137.out b/137.out new file mode 100644 index 00000000..0fd8b813 --- /dev/null +++ b/137.out @@ -0,0 +1 @@ +QA output created by 137 diff --git a/group b/group index 10fd46cf..a51fad60 100644 --- a/group +++ b/group @@ -216,3 +216,4 @@ pattern ajones@sgi.com 134 quota auto 135 metadata auto 136 attr2 +137 metadata log -- 2.47.3