use one map instead of two
diff --git a/tools/biosnoop.py b/tools/biosnoop.py
index 1d12f9e..51a8f6a 100755
--- a/tools/biosnoop.py
+++ b/tools/biosnoop.py
@@ -21,12 +21,12 @@
 #include <linux/blkdev.h>
 
 struct val_t {
+    u32 pid;
     char name[TASK_COMM_LEN];
 };
 
 BPF_HASH(start, struct request *);
-BPF_HASH(pidbyreq, struct request *, u32);
-BPF_HASH(commbyreq, struct request *, struct val_t);
+BPF_HASH(infobyreq, struct request *, struct val_t);
 
 // cache PID and comm by-req
 int trace_pid_start(struct pt_regs *ctx, struct request *req)
@@ -35,9 +35,9 @@
     struct val_t val = {};
 
     pid = bpf_get_current_pid_tgid();
-    pidbyreq.update(&req, &pid);
     if (bpf_get_current_comm(&val.name, sizeof(val.name)) == 0) {
-        commbyreq.update(&req, &val);
+        val.pid = pid;
+        infobyreq.update(&req, &val);
     }
 
     return 0;
@@ -74,12 +74,11 @@
     // As bpf_trace_prink() is limited to a maximum of 1 string and 2
     // integers, we'll use more than one to output the data.
     //
-    valp = commbyreq.lookup(&req);
-    pidp = pidbyreq.lookup(&req);
-    if (pidp == 0 || valp == 0) {
+    valp = infobyreq.lookup(&req);
+    if (valp == 0) {
         bpf_trace_printk("0 0 ? %d\\n", req->__data_len);
     } else {
-        bpf_trace_printk("0 %d %s %d\\n", *pidp, valp->name,
+        bpf_trace_printk("0 %d %s %d\\n", valp->pid, valp->name,
             req->__data_len);
     }
 
@@ -93,8 +92,7 @@
     }
 
     start.delete(&req);
-    pidbyreq.delete(&req);
-    commbyreq.delete(&req);
+    infobyreq.delete(&req);
 
     return 0;
 }