##/bin/sh # # Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of version 2 of the GNU General Public License as # published by the Free Software Foundation. # # This program is distributed in the hope that it would be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Further, this software is distributed without any warranty that it is # free of the rightful claim of any third person regarding infringement # or the like. Any license provided herein, whether implied or # otherwise, applies only to this software file. Patent licenses, if # any, provided herein do not apply to combinations of this program with # other software, or any other product whatsoever. # # You should have received a copy of the GNU General Public License along # with this program; if not, write the Free Software Foundation, Inc., 59 # Temple Place - Suite 330, Boston MA 02111-1307, USA. # # Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, # Mountain View, CA 94043, or: # # http://www.sgi.com # # For further information regarding this notice, see: # # http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ # # # common routines for log testing # Created by dxm@sgi.com & tes@sgi.com # fulldir=$seq.fulldir rm -rf $fulldir mkdir $fulldir _cleanup_logfiles() { if [ $status -eq 0 ]; then # don't keep these files around unless something went wrong rm -rf $fulldir fi } _full() { echo "" >>$seq.full echo "*** $* ***" >>$seq.full echo "" >>$seq.full } # Handle the operations which get split over Log Record # boundaries. # Oper (379)..... flags: CONTINUE # ... # Oper (0)....... flags: WAS_CONT END # # or # # Oper (379)..... flags: none # ... # Oper (0)....... flags: none # _filter_opnum() { $AWK_PROG ' function extract_opnum(str) { # e.g. "(379):" => "379" gsub(/[():]/,"",str) return str } BEGIN { opnum = -1 #debug = 1 } /^Oper/ && debug { printf "line = %s\n", $0 } /^Oper/ { was_cont = 0 prev_opnum = opnum opnum = extract_opnum($2) } /^Oper/ && /flags: CONTINUE/ { $9 = "none" # overwrite CONTINUE flags $2 = sprintf("(%d):", remember+opnum) remember += opnum print next } /^Oper/ && /flags: WAS_CONT END/ { # skip over was-continued op # we assume there can be only 1 was_cont = 1 next } (was_cont == 1) { # skip over any continued op stuff next } /^Oper/ && /UNMOUNT/ { remember = 0 opnum = -1 print next } /^Oper/ && (opnum == 0) { # have operation 0 with NO continued op remember += (prev_opnum+1) } /^Oper/ && debug { printf "line2 = %s, remember = %d, prev_opnum = %d\n", $0, remember, prev_opnum} /^Oper/ && (remember > 0) { # add in opnum accumulation from previous LRs $2 = sprintf("(%d):", remember+opnum) print next } {print} ' } _filter_logprint() { sed ' s/data device: 0x[0-9a-f][0-9a-f]*/data device: /; s/log device: 0x[0-9a-f][0-9a-f]*/log device: /; s/log file: \".*\"/log device: /; s/daddr: [0-9][0-9]*/daddr: /; s/length: [0-9][0-9]*/length: /; s/length: [0-9][0-9]*/length: /; s/^cycle num overwrites: .*$/cycle num overwrites: /; s/tid: [0-9a-f][0-9a-f]*/tid: /; s/tid:0x[0-9a-f][0-9a-f]*/tid:/; s/q:0x[0-9a-f][0-9a-f]*/q:/; s/a:0x[0-9a-f][0-9a-f]*/a:/g; s/blkno:0x[0-9a-f][0-9a-f]*/blkno:/g; s/blkno: [0-9][0-9]* (0x[0-9a-f]*)/blkno: ()/g; s/blkno: [0-9][0-9]*/blkno: /g; s/boff: [0-9][0-9]*/boff: /g; s/len: *[0-9][0-9]*/len:/g; /zeroed blocks/s/[0-9][0-9]*//g; /cleared blocks/d; /log tail/s/[0-9][0-9]*//g; s/atime:[0-9a-fx]* *mtime:[0-9a-fx]* *ctime:[0-9a-fx]*/atime: