Files
apfstests/164
T
Tim Shimmin a906340d27 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.
2007-04-05 15:45:28 +00:00

146 lines
3.4 KiB
Bash

#! /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