torture: Dump ftrace buffer when the RCU grace period stalls
[deliverable/linux.git] / kernel / rcu / rcutorture.c
index 0d739e3797e3e6a5e4aeaa71d618d23714549fa8..9decce0f110ca7810bf23d01871df8647c39fc5a 100644 (file)
@@ -492,9 +492,11 @@ static void srcu_torture_stats(char *page)
        page += sprintf(page, "%s%s per-CPU(idx=%d):",
                       torture_type, TORTURE_FLAG, idx);
        for_each_possible_cpu(cpu) {
-               page += sprintf(page, " %d(%lu,%lu)", cpu,
-                              per_cpu_ptr(srcu_ctl.per_cpu_ref, cpu)->c[!idx],
-                              per_cpu_ptr(srcu_ctl.per_cpu_ref, cpu)->c[idx]);
+               long c0, c1;
+
+               c0 = (long)per_cpu_ptr(srcu_ctl.per_cpu_ref, cpu)->c[!idx];
+               c1 = (long)per_cpu_ptr(srcu_ctl.per_cpu_ref, cpu)->c[idx];
+               page += sprintf(page, " %d(%ld,%ld)", cpu, c0, c1);
        }
        sprintf(page, "\n");
 }
@@ -806,7 +808,7 @@ rcu_torture_fakewriter(void *arg)
        return 0;
 }
 
-void rcutorture_trace_dump(void)
+static void rcutorture_trace_dump(void)
 {
        static atomic_t beenhere = ATOMIC_INIT(0);
 
@@ -1032,6 +1034,7 @@ rcu_torture_printk(char *page)
                                "??? Writer stall state %d g%lu c%lu f%#x\n",
                                rcu_torture_writer_state,
                                gpnum, completed, flags);
+               rcutorture_trace_dump();
        }
        rtcv_snap = rcu_torture_current_version;
 }
@@ -1183,7 +1186,7 @@ static int __init rcu_torture_stall_init(void)
 }
 
 /* Callback function for RCU barrier testing. */
-void rcu_torture_barrier_cbf(struct rcu_head *rcu)
+static void rcu_torture_barrier_cbf(struct rcu_head *rcu)
 {
        atomic_inc(&barrier_cbs_invoked);
 }
This page took 0.024944 seconds and 5 git commands to generate.