From e6e55060ae250e66a9ed96250e9341b26ac54f90 Mon Sep 17 00:00:00 2001 From: Peter Leckie Date: Fri, 22 Aug 2008 06:11:29 +0000 Subject: [PATCH] Add test to check unreserve space hole is the same as what we requested. Merge of master-melb:xfs-cmds:31945a by kenmcd. Add test to check unreserve space hole is the same as what we requested. --- 190 | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 190.out | 4 +++ group | 1 + 3 files changed, 92 insertions(+) create mode 100755 190 create mode 100644 190.out diff --git a/190 b/190 new file mode 100755 index 00000000..62cec9a9 --- /dev/null +++ b/190 @@ -0,0 +1,87 @@ +#! /bin/sh +# FSQA Test No. 190 +# +# This test uses xfs_io to unreserve space in a file at various different +# offsets and sizes. The script then verifies the holes are in the correct +# location. +# +# PV 985792 +#----------------------------------------------------------------------- +# Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved. +#----------------------------------------------------------------------- +# +# creator +owner=pleckie@sgi.com + +#This is the list of holes to punch in the file limited to $filesize +#NOTE holes cannot overlap or this script will fail. +holes="4096:4096 303104:4096 1048576:512 1051648:8192 1065984:8192 1085440:7168" +#filesize in MB +filesize=10 +#Name of file to perform the test on +filename=test-190 +fsblocksize=4096 + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=0 # success is the default! +rm -f $seq.full + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +_require_scratch +_scratch_mkfs_xfs >/dev/null 2>&1 +_scratch_mount + + +dd if=/dev/zero of=$SCRATCH_MNT/$filename bs=1024k count=10 >> $seq.full 2>&1 + +# run DMAPI test using verbose output +echo Punching holes in file +echo Punching holes in file >> $seq.full +for i in $holes ; do + echo xfs_io -c "unresvsp `echo $i |$SED_PROG 's/:/ /g'`" $SCRATCH_MNT/$filename >> $seq.full + xfs_io -c "unresvsp `echo $i |$SED_PROG 's/:/ /g'`" $SCRATCH_MNT/$filename ; +done + +echo Verifying holes are in the correct spots: + +xfs_bmap=`xfs_bmap $SCRATCH_MNT/$filename` +xfs_bmap $SCRATCH_MNT/$filename >> $seq.full +for i in $holes ; do + holeStart=$[`echo $i|$SED_PROG 's/:/ /g'|awk '{print $1}'`]; + holeEnd=$[`echo $i|$SED_PROG 's/:/ /g'|awk '{print $2}'`]; + + #Round hole size down to a multiple of $fsblocksize + holeEnd=$[(($holeStart+$holeEnd)/$fsblocksize)*$fsblocksize] + + #Round hole start up to a multiple of $fsblocksize + if [ $[$holeStart % $fsblocksize] -gt 0 ] ; then + holeStart=$[($holeStart/$fsblocksize +1) * $fsblocksize] + fi + #xfs_bmap prints holes in the following format + # 1: [8..15]: hole + bmap="\[$[$holeStart/512]..$[($holeEnd/512) -1]\]"; + echo $bmap >> $seq.full + if [ $holeEnd == $holeStart ] ; then + continue #there is no hole + fi + if ! echo $xfs_bmap|grep -q $bmap; then + echo Offset $holeStart to $holeEnd basic blocks failed; + status=1; + fi +done +if [ $status == 0 ] ; then + echo Test $seq Passed. +fi + +exit diff --git a/190.out b/190.out new file mode 100644 index 00000000..e86ae849 --- /dev/null +++ b/190.out @@ -0,0 +1,4 @@ +QA output created by 190 +Punching holes in file +Verifying holes are in the correct spots: +Test 190 Passed. diff --git a/group b/group index eb54ff14..c29a7411 100644 --- a/group +++ b/group @@ -283,3 +283,4 @@ mount tes@sgi.com 187 attr auto 188 ci dir auto 189 mount auto +190 rw auto -- 2.39.5