From 088e5f0b2679d3b9510740111fc843a453f2cf03 Mon Sep 17 00:00:00 2001 From: anwleung Date: Tue, 27 Mar 2007 00:24:36 +0000 Subject: [PATCH] script to parse open/closes from trace for prediction git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1307 29311d96-e01e-0410-9327-a35deaab8ce9 --- .../aleung/security1/ceph/openclose_trace.pl | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 branches/aleung/security1/ceph/openclose_trace.pl diff --git a/branches/aleung/security1/ceph/openclose_trace.pl b/branches/aleung/security1/ceph/openclose_trace.pl new file mode 100755 index 0000000000000..0caf7f2563039 --- /dev/null +++ b/branches/aleung/security1/ceph/openclose_trace.pl @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w + +use strict; +use IO::Dir; +use IO::File; + +my @files; +my $file_handle; +my @file_data; +my %seen_paths = (); + +opendir(DIR, "."); +@files = readdir(DIR); +closedir(DIR); + +open(OUT, ">openclose.cephtrace") or die "cannot_open_file: $!"; +flock(OUT, 2); + +for $file_handle(@files) { + if($file_handle =~ /IOR/ and $file_handle !~ /cephtrace/) { + open(FILE, $file_handle) or die "cannot_open_file: $!"; + flock(FILE, 2); + + @file_data = ; + + my $line; + my @args; + foreach $line (@file_data) { + + my $timestamp; + my $op; + my $ret_val; + @args = split(/\s/, $line); + + $timestamp = $args[0]; + $op = $args[1]; + + my $path; + my $rest; + if ($op =~ /open\(/) { + # check success + my $before_eq; + my $after_eq; + my @replies; + ($before_eq, $after_eq) = split(/=/, $line); + @replies = split(/\s/, $after_eq); + $ret_val = $replies[1]; + + if ($ret_val != -1) { + ($op, $path, $rest) = split(/\"/, $op); + print OUT "open\n$path\n102\n$ret_val\n"; + } + } + elsif ($op =~ /close\(/) { + my $nothing; + my $rparen; + my $rest; + ($nothing, $rparen) = split(/\(/, $op); + ($ret_val, $rest) = split(/\)/, $rparen); + print OUT "close\n$ret_val\n"; + } + } + close(FILE); + } +} +close(OUT); -- 2.39.5