]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
script to parse open/closes from trace for prediction
authoranwleung <anwleung@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 27 Mar 2007 00:24:36 +0000 (00:24 +0000)
committeranwleung <anwleung@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 27 Mar 2007 00:24:36 +0000 (00:24 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1307 29311d96-e01e-0410-9327-a35deaab8ce9

branches/aleung/security1/ceph/openclose_trace.pl [new file with mode: 0755]

diff --git a/branches/aleung/security1/ceph/openclose_trace.pl b/branches/aleung/security1/ceph/openclose_trace.pl
new file mode 100755 (executable)
index 0000000..0caf7f2
--- /dev/null
@@ -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 = <FILE>;
+
+       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);