1f08c3bdfSopenharmony_ci#!/bin/bash 2f08c3bdfSopenharmony_ci 3f08c3bdfSopenharmony_ci# Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. 4f08c3bdfSopenharmony_ci# 5f08c3bdfSopenharmony_ci# This program is free software; you can redistribute it and/or modify it 6f08c3bdfSopenharmony_ci# under the terms of version 2 of the GNU General Public License as 7f08c3bdfSopenharmony_ci# published by the Free Software Foundation. 8f08c3bdfSopenharmony_ci# 9f08c3bdfSopenharmony_ci# This program is distributed in the hope that it would be useful, but 10f08c3bdfSopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of 11f08c3bdfSopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12f08c3bdfSopenharmony_ci# 13f08c3bdfSopenharmony_ci# Further, this software is distributed without any warranty that it is 14f08c3bdfSopenharmony_ci# free of the rightful claim of any third person regarding infringement 15f08c3bdfSopenharmony_ci# or the like. Any license provided herein, whether implied or 16f08c3bdfSopenharmony_ci# otherwise, applies only to this software file. Patent licenses, if 17f08c3bdfSopenharmony_ci# any, provided herein do not apply to combinations of this program with 18f08c3bdfSopenharmony_ci# other software, or any other product whatsoever. 19f08c3bdfSopenharmony_ci# 20f08c3bdfSopenharmony_ci# You should have received a copy of the GNU General Public License along 21f08c3bdfSopenharmony_ci# with this program; if not, write the Free Software Foundation, Inc., 22f08c3bdfSopenharmony_ci# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 23f08c3bdfSopenharmony_ci# 24f08c3bdfSopenharmony_ci# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, 25f08c3bdfSopenharmony_ci# Mountain View, CA 94043, or: 26f08c3bdfSopenharmony_ci# 27f08c3bdfSopenharmony_ci# http://www.sgi.com 28f08c3bdfSopenharmony_ci# 29f08c3bdfSopenharmony_ci# For further information regarding this notice, see: 30f08c3bdfSopenharmony_ci# 31f08c3bdfSopenharmony_ci# http://oss.sgi.com/projects/GenInfo/NoticeExplan/ 32f08c3bdfSopenharmony_ci 33f08c3bdfSopenharmony_ci# 34f08c3bdfSopenharmony_ci# rwtest - a shell wrapper around iogen and doio 35f08c3bdfSopenharmony_ci# 36f08c3bdfSopenharmony_ci 37f08c3bdfSopenharmony_citrap "exit 0" INT # Until the smarter signal handler is engaged, below. 38f08c3bdfSopenharmony_ci 39f08c3bdfSopenharmony_ciProg=${0##*/} 40f08c3bdfSopenharmony_ci 41f08c3bdfSopenharmony_ciiOpts="" 42f08c3bdfSopenharmony_cidOpts="" 43f08c3bdfSopenharmony_ciLockRegion="" 44f08c3bdfSopenharmony_ciNprocs=1 45f08c3bdfSopenharmony_ciFiles="" 46f08c3bdfSopenharmony_ciRemove_Test_Files="" 47f08c3bdfSopenharmony_ciFiles_To_Remove="" 48f08c3bdfSopenharmony_ciMPPrun="" 49f08c3bdfSopenharmony_ciexport TCID="rwtest" 50f08c3bdfSopenharmony_ciexport TST_TOTAL=1 51f08c3bdfSopenharmony_ciexport TST_COUNT=1 52f08c3bdfSopenharmony_ci 53f08c3bdfSopenharmony_ciusage() 54f08c3bdfSopenharmony_ci{ 55f08c3bdfSopenharmony_ci echo "$Prog: [-chq] [-N name] [ iogen options ] [ doio options ] files" >&2 56f08c3bdfSopenharmony_ci} 57f08c3bdfSopenharmony_ci 58f08c3bdfSopenharmony_cihelp() 59f08c3bdfSopenharmony_ci{ 60f08c3bdfSopenharmony_ci echo "\ 61f08c3bdfSopenharmony_ci -c Cleanup test files created by this invocation on exit. 62f08c3bdfSopenharmony_ci Default is to leave them. 63f08c3bdfSopenharmony_ci -h This help - ignore all other options/arguments 64f08c3bdfSopenharmony_ci -F Only process filenames - does not run iogen & doio. 65f08c3bdfSopenharmony_ci -P Places Not used 66f08c3bdfSopenharmony_ci -S Scenario Execute an internal scenario. 67f08c3bdfSopenharmony_ci -N Name Pan-style name to be printed with error messages. 68f08c3bdfSopenharmony_ci 69f08c3bdfSopenharmony_ci Options passed through to iogen: 70f08c3bdfSopenharmony_ci -[afiLmOstT] arg 71f08c3bdfSopenharmony_ci -o 72f08c3bdfSopenharmony_ci -q Set rwtest to be quiet and pass the flag on to iogen. 73f08c3bdfSopenharmony_ci 74f08c3bdfSopenharmony_ci Options passed through to doio: 75f08c3bdfSopenharmony_ci -D[rmMVUC] arg 76f08c3bdfSopenharmony_ci -D[aekv] 77f08c3bdfSopenharmony_ci -n nprocs # procs to do simultanious io to the test files. 78f08c3bdfSopenharmony_ci Default is 1. If -n is non-zero, doio's -k option (use 79f08c3bdfSopenharmony_ci file locking) is forced. 80f08c3bdfSopenharmony_ci 81f08c3bdfSopenharmony_ci files Files to test on. File names have the following format: 82f08c3bdfSopenharmony_ci [ size: ] path 83f08c3bdfSopenharmony_ci [ free% [ max size ] : ] path 84f08c3bdfSopenharmony_ci If no size is specified, the files must exist 85f08c3bdfSopenharmony_ci and the contents will be overwritten if testing write or 86f08c3bdfSopenharmony_ci writea system calls. If a size is supplied, an attempt to 87f08c3bdfSopenharmony_ci create/grow/shrink path to the desired size will be made. 88f08c3bdfSopenharmony_ci size is an integer which defaults to bytes, but may be 89f08c3bdfSopenharmony_ci suffixed by 'b', 'k', or 'm' for blocks (4096 byte units), 90f08c3bdfSopenharmony_ci kilobytes (1024 byte units), or megabytes (2^20 byte units). 91f08c3bdfSopenharmony_ci 92f08c3bdfSopenharmony_ci If the size is a percentage, df is used to find how much 93f08c3bdfSopenharmony_ci free space there is (in blocks), and uses that. The maximum 94f08c3bdfSopenharmony_ci size is implied to be in blocks. 95f08c3bdfSopenharmony_ci" >&2 96f08c3bdfSopenharmony_ci} 97f08c3bdfSopenharmony_ci 98f08c3bdfSopenharmony_cikillkids() 99f08c3bdfSopenharmony_ci{ 100f08c3bdfSopenharmony_ci trap "killkids" INT 101f08c3bdfSopenharmony_ci if [[ -z $didkids ]] 102f08c3bdfSopenharmony_ci then 103f08c3bdfSopenharmony_ci didkids=done 104f08c3bdfSopenharmony_ci kill -INT -$$ 105f08c3bdfSopenharmony_ci fi 106f08c3bdfSopenharmony_ci} 107f08c3bdfSopenharmony_ci 108f08c3bdfSopenharmony_ci 109f08c3bdfSopenharmony_cicleanup_and_exit() 110f08c3bdfSopenharmony_ci{ 111f08c3bdfSopenharmony_ci if [ -n "$Remove_Test_Files" ] 112f08c3bdfSopenharmony_ci then 113f08c3bdfSopenharmony_ci if [ -n "$Files_To_Remove" ] 114f08c3bdfSopenharmony_ci then 115f08c3bdfSopenharmony_ci rm -rf $Files_To_Remove 116f08c3bdfSopenharmony_ci fi 117f08c3bdfSopenharmony_ci fi 118f08c3bdfSopenharmony_ci 119f08c3bdfSopenharmony_ci if [ $1 -ne 0 ] 120f08c3bdfSopenharmony_ci then 121f08c3bdfSopenharmony_ci tst_resm TFAIL "Test failed" 122f08c3bdfSopenharmony_ci echo "Test failed" 123f08c3bdfSopenharmony_ci else 124f08c3bdfSopenharmony_ci tst_resm TPASS "Test passed" 125f08c3bdfSopenharmony_ci echo "Test passed" 126f08c3bdfSopenharmony_ci fi 127f08c3bdfSopenharmony_ci 128f08c3bdfSopenharmony_ci exit $1 129f08c3bdfSopenharmony_ci} 130f08c3bdfSopenharmony_ci 131f08c3bdfSopenharmony_ciwhile (( $# > 0 )) 132f08c3bdfSopenharmony_cido case $1 in 133f08c3bdfSopenharmony_ci -c) Remove_Test_Files=yes 134f08c3bdfSopenharmony_ci ;; 135f08c3bdfSopenharmony_ci 136f08c3bdfSopenharmony_ci -d) debug=$2 137f08c3bdfSopenharmony_ci shift 138f08c3bdfSopenharmony_ci ;; 139f08c3bdfSopenharmony_ci 140f08c3bdfSopenharmony_ci -h) help 141f08c3bdfSopenharmony_ci exit 0 142f08c3bdfSopenharmony_ci ;; 143f08c3bdfSopenharmony_ci 144f08c3bdfSopenharmony_ci -F) 145f08c3bdfSopenharmony_ci opt_F="-F" # only process filenames 146f08c3bdfSopenharmony_ci ;; 147f08c3bdfSopenharmony_ci 148f08c3bdfSopenharmony_ci -P) 149f08c3bdfSopenharmony_ci PLACES=$2 150f08c3bdfSopenharmony_ci shift 151f08c3bdfSopenharmony_ci ;; 152f08c3bdfSopenharmony_ci 153f08c3bdfSopenharmony_ci -S) Scenario=$2 154f08c3bdfSopenharmony_ci shift 155f08c3bdfSopenharmony_ci opt_S="-S" 156f08c3bdfSopenharmony_ci ;; 157f08c3bdfSopenharmony_ci 158f08c3bdfSopenharmony_ci -N) Name="($2)" 159f08c3bdfSopenharmony_ci TCID=$2 160f08c3bdfSopenharmony_ci iOpts="$iOpts -N $2" 161f08c3bdfSopenharmony_ci dOpts="$dOpts -N $2" 162f08c3bdfSopenharmony_ci shift 163f08c3bdfSopenharmony_ci ;; 164f08c3bdfSopenharmony_ci 165f08c3bdfSopenharmony_ci # iogen Options to pass thru ... options with an argument 166f08c3bdfSopenharmony_ci -[afiLmOstT] ) 167f08c3bdfSopenharmony_ci iOpts="$iOpts $1 $2" 168f08c3bdfSopenharmony_ci shift 169f08c3bdfSopenharmony_ci ;; 170f08c3bdfSopenharmony_ci 171f08c3bdfSopenharmony_ci # iogen Options to pass thru ... just the option 172f08c3bdfSopenharmony_ci -[o] ) 173f08c3bdfSopenharmony_ci iOpts="$iOpts $1" 174f08c3bdfSopenharmony_ci ;; 175f08c3bdfSopenharmony_ci 176f08c3bdfSopenharmony_ci # iogen options to look at 177f08c3bdfSopenharmony_ci -q) 178f08c3bdfSopenharmony_ci iOpts="$iOpts $1" 179f08c3bdfSopenharmony_ci Quiet=$1 180f08c3bdfSopenharmony_ci ;; 181f08c3bdfSopenharmony_ci 182f08c3bdfSopenharmony_ci # doio Options to pass thru ... options with an argument 183f08c3bdfSopenharmony_ci -D[rmMVUC] ) 184f08c3bdfSopenharmony_ci o=${1#-D} 185f08c3bdfSopenharmony_ci dOpts="$dOpts -$o $2" 186f08c3bdfSopenharmony_ci shift 187f08c3bdfSopenharmony_ci ;; 188f08c3bdfSopenharmony_ci 189f08c3bdfSopenharmony_ci # doio options to pass thru ... just the options 190f08c3bdfSopenharmony_ci -D[aekv] ) 191f08c3bdfSopenharmony_ci o=${1#-D} 192f08c3bdfSopenharmony_ci dOpts="$dOpts -$o" 193f08c3bdfSopenharmony_ci ;; 194f08c3bdfSopenharmony_ci 195f08c3bdfSopenharmony_ci # doio options to look at 196f08c3bdfSopenharmony_ci -n | -Dn ) 197f08c3bdfSopenharmony_ci dOpts="$dOpts $1 $2" 198f08c3bdfSopenharmony_ci # force file locking with > 1 process 199f08c3bdfSopenharmony_ci if [[ $2 > 1 ]] 200f08c3bdfSopenharmony_ci then 201f08c3bdfSopenharmony_ci dOpts="$dOpts -k" 202f08c3bdfSopenharmony_ci fi 203f08c3bdfSopenharmony_ci opt_n="-n" 204f08c3bdfSopenharmony_ci shift 205f08c3bdfSopenharmony_ci ;; 206f08c3bdfSopenharmony_ci 207f08c3bdfSopenharmony_ci \? | -*) 208f08c3bdfSopenharmony_ci echo "$Prog: Illegal option $1" >&2 209f08c3bdfSopenharmony_ci tst_resm TBROK "Illegal option $1" 210f08c3bdfSopenharmony_ci exit 1 211f08c3bdfSopenharmony_ci ;; 212f08c3bdfSopenharmony_ci 213f08c3bdfSopenharmony_ci *) 214f08c3bdfSopenharmony_ci break 215f08c3bdfSopenharmony_ci ;; 216f08c3bdfSopenharmony_ci esac 217f08c3bdfSopenharmony_ci shift 218f08c3bdfSopenharmony_cidone 219f08c3bdfSopenharmony_ci 220f08c3bdfSopenharmony_ci# 221f08c3bdfSopenharmony_ci# Hard-Coded Scenario Specifications 222f08c3bdfSopenharmony_ci# 223f08c3bdfSopenharmony_ci# FSA RAW I/O via FSA 224f08c3bdfSopenharmony_ci# MPPnnn Run as a <nnn> sized MPP application 225f08c3bdfSopenharmony_ci# userstripe create files using user striping 226f08c3bdfSopenharmony_ci# 227f08c3bdfSopenharmony_ci 228f08c3bdfSopenharmony_ciif [[ -n "$opt_S" ]] 229f08c3bdfSopenharmony_cithen 230f08c3bdfSopenharmony_ci case $Scenario in 231f08c3bdfSopenharmony_ci 232f08c3bdfSopenharmony_ci FSA ) 233f08c3bdfSopenharmony_ci # I/O via FSA 234f08c3bdfSopenharmony_ci Flags="parallel" 235f08c3bdfSopenharmony_ci Nprocs=1 236f08c3bdfSopenharmony_ci LockRegion="" 237f08c3bdfSopenharmony_ci ;; 238f08c3bdfSopenharmony_ci 239f08c3bdfSopenharmony_ci MPP* ) 240f08c3bdfSopenharmony_ci # use mpprun... to cooperate with a batch system, this 241f08c3bdfSopenharmony_ci # requires scanning mppview, etc. 242f08c3bdfSopenharmony_ci 243f08c3bdfSopenharmony_ci NPE=${Scenario#MPP} 244f08c3bdfSopenharmony_ci MPPrun=" mpprun -n $NPE " 245f08c3bdfSopenharmony_ci ;; 246f08c3bdfSopenharmony_ci userstripe) 247f08c3bdfSopenharmony_ci #create files using user striping 248f08c3bdfSopenharmony_ci Oflags=O_PLACE,0xffffffffffffffff,1000 249f08c3bdfSopenharmony_ci ;; 250f08c3bdfSopenharmony_ci 251f08c3bdfSopenharmony_ci places*) 252f08c3bdfSopenharmony_ci FSIZE=${Scenario#places-} 253f08c3bdfSopenharmony_ci oi="$IFS" 254f08c3bdfSopenharmony_ci IFS=":" 255f08c3bdfSopenharmony_ci set -- $PLACES 256f08c3bdfSopenharmony_ci if [ $# -eq 0 ] 257f08c3bdfSopenharmony_ci then 258f08c3bdfSopenharmony_ci # "this isn't supposed to happen" 259f08c3bdfSopenharmony_ci Files="25%:rwtest.$$" 260f08c3bdfSopenharmony_ci else 261f08c3bdfSopenharmony_ci IFS="$oi" 262f08c3bdfSopenharmony_ci PL=${*} 263f08c3bdfSopenharmony_ci for p in $PL 264f08c3bdfSopenharmony_ci do 265f08c3bdfSopenharmony_ci f="$f "${FSIZE}":"${p}"/rwtest$$" 266f08c3bdfSopenharmony_ci done 267f08c3bdfSopenharmony_ci set -- $f 268f08c3bdfSopenharmony_ci fi 269f08c3bdfSopenharmony_ci ;; 270f08c3bdfSopenharmony_ci esac 271f08c3bdfSopenharmony_cifi 272f08c3bdfSopenharmony_ci 273f08c3bdfSopenharmony_ci# 274f08c3bdfSopenharmony_ci# If no files are specified ... 275f08c3bdfSopenharmony_ci# check if PLACES is set; if so, put one file in each place 276f08c3bdfSopenharmony_ci# otherwise generate one filename in the current directory. 277f08c3bdfSopenharmony_ci# 278f08c3bdfSopenharmony_ci 279f08c3bdfSopenharmony_ciif [ $# -eq 0 ] 280f08c3bdfSopenharmony_cithen 281f08c3bdfSopenharmony_ci # put one file in each of $PLACES 282f08c3bdfSopenharmony_ci Files="25%:rwtest.file" 283f08c3bdfSopenharmony_cielse 284f08c3bdfSopenharmony_ci Files=$* 285f08c3bdfSopenharmony_cifi 286f08c3bdfSopenharmony_ci 287f08c3bdfSopenharmony_ci# 288f08c3bdfSopenharmony_ci# use 'df -PB' to see how many blocks are available, apply a hard limit of 289f08c3bdfSopenharmony_ci# 1,000,000 blocks if no limit is specified 290f08c3bdfSopenharmony_ci# 291f08c3bdfSopenharmony_ci 292f08c3bdfSopenharmony_cicase "$(uname -s)" in 293f08c3bdfSopenharmony_ci IRIX | IRIX64 ) dfOpts="-Pb" ;; 294f08c3bdfSopenharmony_ci Linux) dfOpts="-P" ;; 295f08c3bdfSopenharmony_ci *) dfOpts="-PB" ;; 296f08c3bdfSopenharmony_ciesac 297f08c3bdfSopenharmony_ci 298f08c3bdfSopenharmony_cifor f in $Files 299f08c3bdfSopenharmony_cido 300f08c3bdfSopenharmony_ci file=${f##*:} 301f08c3bdfSopenharmony_ci if [ ! -f "$file" ] 302f08c3bdfSopenharmony_ci then 303f08c3bdfSopenharmony_ci Files_To_Remove="$Files_To_Remove $file" 304f08c3bdfSopenharmony_ci fi 305f08c3bdfSopenharmony_ci 306f08c3bdfSopenharmony_ci dir=$(dirname $file) 307f08c3bdfSopenharmony_ci # create directory for file if non-existent 308f08c3bdfSopenharmony_ci if [ ! -d "$dir" ] 309f08c3bdfSopenharmony_ci then 310f08c3bdfSopenharmony_ci mkdir -p $dir 311f08c3bdfSopenharmony_ci Files_To_Remove="$Files_To_Remove $dir" 312f08c3bdfSopenharmony_ci fi 313f08c3bdfSopenharmony_ci size=${f%%:*} 314f08c3bdfSopenharmony_ci if [[ $size = *%* ]] 315f08c3bdfSopenharmony_ci then 316f08c3bdfSopenharmony_ci 317f08c3bdfSopenharmony_ci typeset -i n=0 318f08c3bdfSopenharmony_ci while (( n < ${#szcache[*]} )) 319f08c3bdfSopenharmony_ci do 320f08c3bdfSopenharmony_ci if [[ szcache[$n] = $dir ]]; then 321f08c3bdfSopenharmony_ci break; 322f08c3bdfSopenharmony_ci fi 323f08c3bdfSopenharmony_ci n=n+1 324f08c3bdfSopenharmony_ci done 325f08c3bdfSopenharmony_ci 326f08c3bdfSopenharmony_ci if (( n < ${#szcache[*]} )) 327f08c3bdfSopenharmony_ci then 328f08c3bdfSopenharmony_ci blks=${szblks[$n]} 329f08c3bdfSopenharmony_ci else 330f08c3bdfSopenharmony_ci # If df is a symlink (to busybox) then do not pass the $dir and $dfOpts 331f08c3bdfSopenharmony_ci # parameters because they don't work as expected 332f08c3bdfSopenharmony_ci if test -h $(which df) 333f08c3bdfSopenharmony_ci then 334f08c3bdfSopenharmony_ci dir=""; dfOpts=""; 335f08c3bdfSopenharmony_ci fi 336f08c3bdfSopenharmony_ci 337f08c3bdfSopenharmony_ci blks=$(df $dfOpts $dir | 338f08c3bdfSopenharmony_ci (while read fs blks used avail cap mountpoint 339f08c3bdfSopenharmony_ci do 340f08c3bdfSopenharmony_ci #echo $fs $blks $used $avail >&2 341f08c3bdfSopenharmony_ci b=$avail 342f08c3bdfSopenharmony_ci done 343f08c3bdfSopenharmony_ci echo $b) ) 344f08c3bdfSopenharmony_ci 345f08c3bdfSopenharmony_ci # check if blks is a number, else set a default value for blks 346f08c3bdfSopenharmony_ci default_sz=1000000 347f08c3bdfSopenharmony_ci if [ $blks -eq $blks 2> /dev/null -a $blks -gt 0 ] 348f08c3bdfSopenharmony_ci then 349f08c3bdfSopenharmony_ci 350f08c3bdfSopenharmony_ci case $(uname) in 351f08c3bdfSopenharmony_ci Linux) blks=$( expr $blks / 2 ) ;; 352f08c3bdfSopenharmony_ci esac 353f08c3bdfSopenharmony_ci 354f08c3bdfSopenharmony_ci szcache[${#szcache[*]}+1]=$dir 355f08c3bdfSopenharmony_ci szblks[${#szblks[*]}+1]=$blks 356f08c3bdfSopenharmony_ci 357f08c3bdfSopenharmony_ci max=${size##*\%} 358f08c3bdfSopenharmony_ci [ "x$max" = "x" ] && max=$default_sz 359f08c3bdfSopenharmony_ci size=${size%%\%*} 360f08c3bdfSopenharmony_ci 361f08c3bdfSopenharmony_ci case $(uname) in 362f08c3bdfSopenharmony_ci IRIX*) 363f08c3bdfSopenharmony_ci sz=$( perl -le 'print int( '$blks' * '$size' / 100 )' ) 364f08c3bdfSopenharmony_ci ;; 365f08c3bdfSopenharmony_ci *) 366f08c3bdfSopenharmony_ci sz=$(expr \( $blks '*' $size \) / 100) 367f08c3bdfSopenharmony_ci ;; 368f08c3bdfSopenharmony_ci esac 369f08c3bdfSopenharmony_ci 370f08c3bdfSopenharmony_ci if [ $sz -gt $max ] 371f08c3bdfSopenharmony_ci then 372f08c3bdfSopenharmony_ci sz=$max 373f08c3bdfSopenharmony_ci fi 374f08c3bdfSopenharmony_ci else 375f08c3bdfSopenharmony_ci sz=$default_sz 376f08c3bdfSopenharmony_ci fi 377f08c3bdfSopenharmony_ci fi 378f08c3bdfSopenharmony_ci f=$sz"b:"$file 379f08c3bdfSopenharmony_ci fi 380f08c3bdfSopenharmony_ci F[${#F[*]}+1]=$f 381f08c3bdfSopenharmony_cidone 382f08c3bdfSopenharmony_ci 383f08c3bdfSopenharmony_ciFiles=${F[*]} 384f08c3bdfSopenharmony_ci 385f08c3bdfSopenharmony_ciif [[ -z ${dOpts} ]]; then 386f08c3bdfSopenharmony_ci dOpts=-av 387f08c3bdfSopenharmony_cifi 388f08c3bdfSopenharmony_ci 389f08c3bdfSopenharmony_ciif [[ -n "$opt_F" ]]; then 390f08c3bdfSopenharmony_ci 391f08c3bdfSopenharmony_ci echo $Files 392f08c3bdfSopenharmony_ci 393f08c3bdfSopenharmony_cielse 394f08c3bdfSopenharmony_ci 395f08c3bdfSopenharmony_ci cmd="${LTPROOT}/testcases/bin/iogen ${iOpts} ${Files} | $MPPrun ${LTPROOT}/testcases/bin/doio ${dOpts}" 396f08c3bdfSopenharmony_ci 397f08c3bdfSopenharmony_ci if [[ -z "$Quiet" ]]; then 398f08c3bdfSopenharmony_ci echo $cmd 399f08c3bdfSopenharmony_ci fi 400f08c3bdfSopenharmony_ci 401f08c3bdfSopenharmony_ci trap "killkids" INT 402f08c3bdfSopenharmony_ci trap "cleanup_and_exit 2" HUP 403f08c3bdfSopenharmony_ci 404f08c3bdfSopenharmony_ci ( ${LTPROOT}/testcases/bin/iogen ${iOpts} ${Files} 405f08c3bdfSopenharmony_ci r=$? 406f08c3bdfSopenharmony_ci if [ $r -ne 0 ] 407f08c3bdfSopenharmony_ci then 408f08c3bdfSopenharmony_ci echo "$Prog$Name : iogen reported errors (r=$r)" >&2 409f08c3bdfSopenharmony_ci tst_resm TFAIL "iogen reported errors (r=$r)" 410f08c3bdfSopenharmony_ci kill -HUP $$ 411f08c3bdfSopenharmony_ci fi 412f08c3bdfSopenharmony_ci ) | $MPPrun ${LTPROOT}/testcases/bin/doio ${dOpts} 413f08c3bdfSopenharmony_ci r=$? 414f08c3bdfSopenharmony_ci if [ $r -ne 0 ] 415f08c3bdfSopenharmony_ci then 416f08c3bdfSopenharmony_ci echo "$Prog$Name : doio reported errors (r=$r)" >&2 417f08c3bdfSopenharmony_ci tst_resm TFAIL "doio reported errors (r=$r)" 418f08c3bdfSopenharmony_ci fi 419f08c3bdfSopenharmony_ci 420f08c3bdfSopenharmony_ci cleanup_and_exit $r 421f08c3bdfSopenharmony_cifi 422