|
|
| File: [Development] / xfs-cmds / xfstests / 164 (download)
Revision 1.2, Thu Apr 5 15:45:28 2007 UTC (10 years, 6 months ago) by tes.longdrop.melbourne.sgi.com
Output wasn't deterministic. Remove bmap output from stdout, just have going to seq.full. Merge of master-melb:xfs-cmds:28376a by kenmcd. Execute bits changed from --- to x-- Fix up bmap output. Meant to remove the testfile on every test but forgot to. Also needed to truncate the files in the 2nd group of tests which used resvsp so that the length/eof was correct for the test. |
#! /bin/sh
# FS QA Test No. 164
#
# To test for short dio reads on IRIX and Linux - pv#962005/962547
# http://bugworks.engr.sgi.com/query.cgi/962005
#
# In particular we are interested in dio_reads for the cases of:
# * eof on a hole
# * eof on an unwritten extent
# * eof on a sector boundary and not on a sector boundary
#
#
#-----------------------------------------------------------------------
# Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved.
#-----------------------------------------------------------------------
#
# creator
owner=tes@puffy.melbourne.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()
{
cd /
rm -f $tmp.*
}
_filter_io()
{
tee -a $seq.full | sed 's/ops;.*/ops/'
}
#
# 1: [128..199]: 212280..212351 0 (212280..212351) 72 10000
#
#
_filter_bmap()
{
awk '$3 ~ /hole/ { print $1, $2, $3; next }
$7 ~ /10000/ { print $1, $2, "unwritten"; next }
{print $1, $2}' >> $seq.full
}
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
# real QA test starts here
# Modify as appropriate.
_supported_fs xfs udf nfs
_supported_os IRIX Linux
testfile=$TEST_DIR/file.$seq
_test_eof_hole()
{
# on a BB boundary
rm -f $testfile
xfs_io -f -d \
-c 'pwrite -b 50k 0 50k' \
-c 'truncate 100k' \
-c 'pread -b 200k 0 200k' \
$testfile | _filter_io
xfs_io -c 'bmap -vp' $testfile | _filter_bmap
echo ""
# on an odd byte boundary => 1 short of boundary
rm -f $testfile
boundary_minus1=`expr 100 \* 1024 - 1`
echo "boundary_minus1 = $boundary_minus1"
xfs_io -f -d \
-c 'pwrite -b 50k 0 50k' \
-c "truncate $boundary_minus1" \
-c 'pread -b 200k 0 200k' \
$testfile | _filter_io
xfs_io -c 'bmap -vp' $testfile | _filter_bmap
echo ""
# on an odd byte boundary => 1 over boundary
rm -f $testfile
echo "boundary_plus1 = $boundary_plus1"
boundary_plus1=`expr 100 \* 1024 + 1`
xfs_io -f -d \
-c 'pwrite -b 50k 0 50k' \
-c "truncate $boundary_plus1" \
-c 'pread -b 200k 0 200k' \
$testfile | _filter_io
xfs_io -c 'bmap -vp' $testfile | _filter_bmap
echo ""
}
_test_eof_unwritten_extent()
{
# on a BB boundary
rm -f $testfile
xfs_io -f -d \
-c 'resvsp 0 100k' \
-c 'truncate 100k' \
-c 'pwrite -b 50k 0 50k' \
-c 'pread -b 200k 0 200k' \
$testfile | _filter_io
xfs_io -c 'bmap -vp' $testfile | _filter_bmap
echo ""
# on an odd byte boundary => 1 short of boundary
rm -f $testfile
boundary_minus1=`expr 100 \* 1024 - 1`
echo "boundary_minus1 = $boundary_minus1"
xfs_io -f -d \
-c "resvsp 0 $boundary_minus1" \
-c "truncate $boundary_minus1" \
-c 'pwrite -b 50k 0 50k' \
-c 'pread -b 200k 0 200k' \
$testfile | _filter_io
xfs_io -c 'bmap -vp' $testfile | _filter_bmap
echo ""
# on an odd byte boundary => 1 over boundary
rm -f $testfile
boundary_plus1=`expr 100 \* 1024 + 1`
echo "boundary_plus1 = $boundary_plus1"
xfs_io -f -d \
-c "resvsp 0 $boundary_plus1" \
-c "truncate $boundary_plus1" \
-c 'pwrite -b 50k 0 50k' \
-c 'pread -b 200k 0 200k' \
$testfile | _filter_io
xfs_io -c 'bmap -vp' $testfile | _filter_bmap
echo ""
}
_test_eof_hole
_test_eof_unwritten_extent
# success, all done
status=0
exit