+#Globals
+my $pname = $0;
+my $obddev = "";
+my $obdstats = "stats";
+my $clear = 0;
+my $graphable = 0;
+my $interval = 0;
+my $statspath = "None";
+my $statsname = "stats";
+my $anysumsquare = 0;
+my $printed_once = 0;
+my %cumulhash;
+my %sumhash;
+my $anysum = 0;
+my $starttime = 0;
+my $width = 120;
+my $have_readkey = 0;
+my $debug = 0;
+my $counter = 999999999;
+my $ONE_MB = 1048576;
+
+# Command line parameter parsing
+use Getopt::Std;
+getopts('cdghi:w:') or usage();
+usage() if $opt_h;
+$clear = 1 if $opt_c;
+$debug = $opt_d if $opt_d;
+$graphable = 1 if $opt_g;
+$interval = $opt_i if $opt_i;
+$counter = $opt_n if $opt_n;
+$width = $opt_w if $opt_w;
+
+my $i = 0;
+foreach (@ARGV) {
+ $obddev = $_;
+ $obddev =~ s/\./\//g;
+ $i++;
+ if ($i > 1) {
+ print "ERROR: extra argument $_\n";
+ usage();
+ }
+}
+if (!$obddev) {
+ print "ERROR: Need to specify stats_file\n";
+ usage();
+}
+
+# Process arguments
+my $procpath = "/sys/kernel/debug/lustre";
+foreach my $param ( "$obddev", "$obddev*/$obdstats", "$obddev*/*/$obdstats",
+ "*/$obddev*/$obdstats", "*/*/$obddev*/$obdstats" ) {
+ if ($debug) {
+ print "trying $procpath/$param\n";
+ }
+ my $st = glob("$procpath/$param");
+ if ($debug) {
+ print "glob $procpath/$param = $st\n";
+ }
+ if (-f "$st") {
+ $statspath = $st;
+ $statsname = `lctl list_param $param | head -n 1`;
+ if ($debug) {
+ print "using '$statsname' from $statspath\n"
+ }
+ last;
+ }
+}
+if ($statspath =~ /^None$/) {
+ # some older stats are kept in /proc, but don't look there first
+ $procpath = "/proc/fs/lustre";
+
+ foreach my $param ( "$obddev", "$obddev*/$obdstats", "$obddev*/*/$obdstats",
+ "*/$obddev*/$obdstats", "*/*/$obddev*/$obdstats" ) {
+ if ($debug) {
+ print "trying $procpath/$param\n";
+ }
+ $st = glob("$procpath/$param");
+ if ($debug) {
+ print "glob $procpath/$param = $st\n";
+ }
+ if (-f "$st") {
+ $statspath = $st;
+ $statsname = `lctl list_param $param | head -n 1`;
+ if ($debug) {
+ print "using $statspath\n"
+ }
+ last;
+ }
+ }
+ if ($statspath =~ /^None$/) {
+ die "Cannot locate stat file for: $obddev\n";
+ }
+}
+