mirror of
https://github.com/ceph/ceph
synced 2024-12-22 03:22:00 +00:00
43 lines
870 B
Perl
43 lines
870 B
Perl
|
#!/usr/bin/perl
|
||
|
|
||
|
my %waiting; # context => what where what is "inode ..." or "dir ..."
|
||
|
my %hist; # context => history since waited
|
||
|
my @waiting;
|
||
|
|
||
|
my $line = 0;
|
||
|
while (<>) {
|
||
|
|
||
|
#print $line . $_ if /0x8d4f6a0/;
|
||
|
$line++;
|
||
|
if (/request_start/) {
|
||
|
my ($c) = /(0x\w+)/;
|
||
|
my ($what) = $'; #';
|
||
|
chomp $what;
|
||
|
#print "$line add_waiter $c $what\n" if /0x8d4f6a0/;
|
||
|
$waiting{$c} = $what
|
||
|
if $what && !$waiting{$c};
|
||
|
$hist{$c} .= "$line: $_";
|
||
|
unless (grep {$_ eq $c} @waiting) {
|
||
|
push( @waiting, $c );
|
||
|
}
|
||
|
}
|
||
|
#if (/finish_waiting/) {
|
||
|
# my ($c) = /(0x\w+)/;
|
||
|
# $hist{$c} .= "$line: $_";
|
||
|
#}
|
||
|
if (/request_finish/ ||
|
||
|
/request_forward/) {
|
||
|
my ($c) = /(0x\w+)/;
|
||
|
#print "took\n" if /0x8d4f6a0/;
|
||
|
delete $waiting{$c};
|
||
|
delete $hist{$c};
|
||
|
@waiting = grep {$_ ne $c} @waiting;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for my $c (@waiting) {
|
||
|
print "---- lost request $c $waiting{$c}
|
||
|
$hist{$c}
|
||
|
";
|
||
|
}
|