##/bin/bash # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. # # common routines for log testing fulldir=$seqres.fulldir rm -rf $fulldir _cleanup_logfiles() { if [ $status -eq 0 ]; then # don't keep these files around unless something went wrong rm -rf $fulldir fi } _full() { echo "" >>$seqres.full echo "*** $* ***" >>$seqres.full echo "" >>$seqres.full } _echofull() { echo "" | tee -a $seqres.full echo "*** $* ***" | tee -a $seqres.full echo "" | tee -a $seqres.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 ' BEGIN { debug = 0 } /^Oper/ && debug { printf "line = %s\n", $0 } /^Oper/ { was_cont = 0 } /^Oper/ && /flags: CONTINUE/ { # this will be the first op of split region $9 = "none" # overwrite CONTINUE flags print print "Not printing rest" was_cont = 1 next } /^Oper/ && /flags: WAS_CONT END/ { # this will be the last op of split region # 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 } {print} ' } # # Filter out things that can change # We have complexities which change when log is sync'ed at different # times. # Example1: DATA FORK EXTENTS # These will not show up if inode is sync'ed sooner # /DATA FORK EXTENTS/d; # /INODE:/s/flags:0x5/flags:0x1/g; # define XFS_ILOG_CORE 0x001 /* log standard inode fields */ # define XFS_ILOG_DEXT 0x004 /* log i_df.if_extents */ # # _filter_logprint() { sed ' s/ver:[0-9]/ver:/; s/version [0-9] format [0-9]/version format /; 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; /BUF:/s/[ ]*flags:.*$//; /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: