The PC requests use the same queue and also contribute to the
queue length, so they should be added to the queue depth trace.

Signed-off-by: Christof Schmitt <[EMAIL PROTECTED]>

--- a/blkparse.c        2008-01-14 07:42:45.000000000 +0100
+++ b/blkparse.c        2008-01-14 07:45:20.000000000 +0100
@@ -1347,8 +1347,10 @@ static void log_pc(struct per_cpu_info *
        process_fmt(act, pci, t, -1ULL, t->pdu_len, buf);
 }
 
-static void dump_trace_pc(struct blk_io_trace *t, struct per_cpu_info *pci)
+static void dump_trace_pc(struct blk_io_trace *t, struct per_dev_info *pdi,
+                         struct per_cpu_info *pci)
 {
+       int w = (t->action & BLK_TC_ACT(BLK_TC_WRITE)) != 0;
        int act = t->action & 0xffff;
 
        switch (act) {
@@ -1362,12 +1364,23 @@ static void dump_trace_pc(struct blk_io_
                        log_generic(pci, t, "S");
                        break;
                case __BLK_TA_REQUEUE:
+                       /*
+                        * can happen if we miss traces, don't let it go
+                        * below zero
+                        */
+                       if (pdi->cur_depth[w])
+                               pdi->cur_depth[w]--;
                        log_generic(pci, t, "R");
                        break;
                case __BLK_TA_ISSUE:
+                       pdi->cur_depth[w]++;
+                       if (pdi->cur_depth[w] > pdi->max_depth[w])
+                               pdi->max_depth[w] = pdi->cur_depth[w];
                        log_pc(pci, t, "D");
                        break;
                case __BLK_TA_COMPLETE:
+                       if (pdi->cur_depth[w])
+                               pdi->cur_depth[w]--;
                        log_pc(pci, t, "C");
                        break;
                case __BLK_TA_INSERT:
@@ -1463,7 +1476,7 @@ static void dump_trace(struct blk_io_tra
 {
        if (text_output) {
                if (t->action & BLK_TC_ACT(BLK_TC_PC))
-                       dump_trace_pc(t, pci);
+                       dump_trace_pc(t, pdi, pci);
                else
                        dump_trace_fs(t, pdi, pci);
        }

-- 
-
To unsubscribe from this list: send the line "unsubscribe linux-btrace" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to