diff --git a/lustre/utils/llanalyze b/lustre/utils/llanalyze
index 64c027d18900d4e28439f580bad4f4471172c5a6..9607679dfc427d8b076eb61d4d648df0977995d1 100644
--- a/lustre/utils/llanalyze
+++ b/lustre/utils/llanalyze
@@ -67,7 +67,7 @@ sub extractpid
 {
     $line = shift;
 #    print "$_\n";
-    if ($line =~ m/\d+:\d+:\d+:\d+\.\d+:\d+:\d+:*$/) {
+    if ($line =~ m/(\d+):(\d+):(\d+):(\d+\.\d+):(\d+):(\d+):.*$/) {
 	return $6;
     }
 }
@@ -76,10 +76,27 @@ sub extracthostpid
 {
     $line = shift;
 #    print "$_\n";
-    if ($line =~ m/\d+:\d+:\d+:\d+\.\d+:\d+:\d+:\d+:*$/) {
+    if ($line =~ m/(\d+):(\d+):(\d+):(\d+\.\d+):(\d+):(\d+):(\d+):.*$/) {
 	return $7;
     }
 }
+sub extractsubsys
+{
+    $line = shift;
+#    print "$_\n";
+    if ($line =~ m/(\d+):(\d+):(\d+):(\d+\.\d+):(\d+):(\d+):(\d+):.*$/) {
+	return hex($1);
+    }
+}
+
+sub extractmask
+{
+    $line = shift;
+#    print "$_\n";
+    if ($line =~ m/(\d+):(\d+):(\d+):(\d+\.\d+):(\d+):(\d+):(\d+):.*$/) {
+	return hex($2);
+    }
+}
 
 sub entering_rpc
 {
@@ -284,11 +301,10 @@ while (<LOG>) {
     }
 
     $linepid = extractpid($_);
-    $linehpid = extracthostpid($_);
-    $linemask = getmask($_);
-    $linesubsys = getsubsys($_);
 
-#    printf "---> mask %x subsys %x\n", $linemask, $linesubsys;
+    $linehpid = extracthostpid($_);
+    $linesubsys = extractsubsys($_);
+    $linemask = extractmask($_);
 
     if (leaving($_)) {
         chop $prefix->{$linepid};