push @datestamp, $gdatestamp;
}
}
+ elsif(/planner: timestamp (\S+)/) {
+ $gdatestamp = $1;
+ if(!defined $datestamp{$gdatestamp}) {
+ $datestamp{$gdatestamp} = 1;
+ push @datestamp, $gdatestamp;
+ }
+ }
elsif(/setup_estimate: ([_\-\d\.A-Za-z]*):(\S+): command .*, options: *(\S+) *last_level -?\d+ next_level0 -?\d+ level_days \d+ *getting estimates (-?\d) \(-2\) (-?\d) \(-2\) (-?\d) \(-2\)/) {
$host=$1;
$partition=$2;
}
$running_dumper{$2} = $hostpart;
$error{$hostpart}="";
+ $size{$hostpart} = 0;
$dumpers_active++;
if(! defined($dumpers_active[$dumpers_active])) {
$dumpers_active[$dumpers_active]=0;
}
$running_dumper{$2} = $hostpart;
$error{$hostpart}="";
+ $size{$hostpart} = 0;
$dumpers_active++;
if(! defined($dumpers_active[$dumpers_active])) {
$dumpers_active[$dumpers_active]=0;
}
$running_dumper{$2} = $hostpart;
$error{$hostpart}="";
+ $size{$hostpart} = 0;
$dumpers_active++;
if(! defined($dumpers_active[$dumpers_active])) {
$dumpers_active[$dumpers_active]=0;
$error{$hostpart}="driver: (aborted:$error)";
$dumpers_active--;
}
- elsif(/driver: result time (\S+) from (dumper\d+): (DONE|PARTIAL) (\d+-\d+) (\d+) (\d+) (\d+) \[.*\]/) {
+ elsif(/driver: result time (\S+) from (dumper\d+): (DONE|PARTIAL) (\d+-\d+) (\d+) (\d+) (\d+) "?\[.*\]"?/) {
$current_time=$1;
$serial=$4;
$origsize=$5 / $unitdivisor;
$dump_time{$hostpart}=$1;
$error{$hostpart}="";
$dumpers_active--;
- $partial{$hostpart}=1 if $3 eq "PARTIAL" ;
+ if ($3 eq "PARTIAL") {
+ $partial{$hostpart} = 1;
+ }
+ else {
+ $partial{$hostpart} = 0;
+ }
}
- elsif(/driver: result time (\S+) from (chunker\d+): (DONE|PARTIAL) (\d+-\d+) (\d+) \[.*\]/) {
+ elsif(/driver: result time (\S+) from (chunker\d+): (DONE|PARTIAL) (\d+-\d+) (\d+) "?\[.*\]"?/) {
$current_time=$1;
$serial=$4;
$outputsize=$5 / $unitdivisor;
$running_dumper{$2} = "0";
$dump_time{$hostpart}=$1;
$error{$hostpart}="";
- $partial{$hostpart}=1 if $3 eq "PARTIAL" ;
+ if ($3 eq "PARTIAL") {
+ $partial{$hostpart} = 1;
+ }
+ else {
+ $partial{$hostpart} = 0;
+ }
}
elsif(/driver: result time (\S+) from (dumper\d+): ABORT-FINISHED (\d+-\d+)/) {
$current_time=$1;
if(!defined $level{$hostpart}) {
$level{$hostpart} = $level;
}
- $serial{$serial}=$hostpart;
$taper_started{$hostpart}=1;
$taper_finished{$hostpart}=0;
$taper_time{$hostpart}=$1;
if(!defined $level{$hostpart}) {
$level{$hostpart} = $level;
}
- $serial{$serial}=$hostpart;
$taper_started{$hostpart}=1;
$taper_finished{$hostpart}=0;
$taper_time{$hostpart}=$1;
$taper_finished{$hostpart}=0;
$taper_time{$hostpart}=$1;
}
- elsif(/driver: result time (\S+) from taper: (DONE|PARTIAL) (\d+-\d+) (\S+) (\d+) \[sec (\S+) kb (\d+) kps/) {
+ elsif(/driver: result time (\S+) from taper: (DONE|PARTIAL) (\d+-\d+) (\S+) (\d+) "?\[sec (\S+) kb (\d+) kps/) {
$current_time=$1;
$serial=$3;
$label=$4;
else {
$ntesize{$nb_tape} += $size{$hostpart};
}
- $partial{$hostpart}=1 if $3 eq "PARTIAL" ;
+ if ($3 eq "PARTIAL") {
+ $partial{$hostpart} = 1;
+ }
+ else {
+ $partial{$hostpart} = 0;
+ }
}
elsif(/driver: result time (\S+) from taper: (TRY-AGAIN|TAPE-ERROR) (\d+-\d+) (.+)/) {
$current_time=$1;
%free = split (/ +/, $2);
%qlen = split (/ +/, $5);
- if($status_driver ne "") {
- $dumpers_active[$dumpers_active_prev]
- +=$current_time-$state_time_prev;
- $dumpers_held[$dumpers_active_prev]{$status_driver}
- +=$current_time-$state_time_prev;
- }
- $state_time_prev=$current_time;
- $dumpers_active_prev=$dumpers_active;
- $status_driver=$6;
- if(! defined($dumpers_held[$dumpers_active]{$status_driver})) {
- $dumpers_held[$dumpers_active]{$status_driver}=0;
+ if(defined($dumpers_active)) {
+ if($status_driver ne "") {
+ $dumpers_active[$dumpers_active_prev]
+ +=$current_time-$state_time_prev;
+ $dumpers_held[$dumpers_active_prev]{$status_driver}
+ +=$current_time-$state_time_prev;
+ }
+ $state_time_prev=$current_time;
+ $dumpers_active_prev=$dumpers_active;
+ $status_driver=$6;
+ if(! defined($dumpers_held[$dumpers_active]{$status_driver})) {
+ $dumpers_held[$dumpers_active]{$status_driver}=0;
+ }
}
}
- elsif(/taper: wrote label `(\S*)'/) {
+ elsif(/taper: .*wrote label `(\S*)'/) {
$nb_tape++;
$ntlabel{$nb_tape} = $1;
$ntpartition{$nb_tape} = 0;
$hostpart=&make_hostpart($host,$partition,$datestamp);
next if(!defined $estimate{$hostpart} && !defined $flush{$hostpart});
$nb_partition++;
- if( !defined $size{$hostpart} && defined $holding_file{$hostpart}) {
+ if( (!defined $size{$hostpart} || $size{$hostpart} == 0) &&
+ defined $holding_file{$hostpart}) {
$size{$hostpart} = &dump_size($holding_file{$hostpart}) / (1024 * $unitdivisor);
}
$in_flush=0;
if( defined $starttime ) {
print " (", &showtime($taper_time{$hostpart}), ")";
}
- print ", PARTIAL" if defined $partial{$hostpart};
+ print ", PARTIAL" if defined $partial{$hostpart} &&
+ $partial{$hostpart} == 1;
print "\n";
}
$tpartition++;
print " (", &showtime($dump_time{$hostpart}), ")";
}
print ", wait for writing to tape";
- print ", PARTIAL" if defined $partial{$hostpart};
+ print ", PARTIAL" if defined $partial{$hostpart} &&
+ $partial{$hostpart} == 1;;
print "\n";
}
$dpartition++;
printf "%-${maxnamelength}s%2d", "$host:$partition", $level{$hostpart};
printf "%9d$unit", $size{$hostpart};
print " waiting to flush";
- print ", PARTIAL" if defined $partial{$hostpart};
+ print ", PARTIAL" if defined $partial{$hostpart} &&
+ $partial{$hostpart} == 1;
print "\n";
}
$wfpartition++;