mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
a906340d27
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.
146 lines
3.4 KiB
Bash
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
|