be2net: take care of __vlan_put_tag return value
[cascardo/linux.git] / kernel / rcutree_trace.c
index 967115c..0d095dc 100644 (file)
@@ -113,6 +113,8 @@ static char convert_kthread_status(unsigned int kthread_status)
 
 static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp)
 {
+       long ql, qll;
+
        if (!rdp->beenonline)
                return;
        seq_printf(m, "%3d%cc=%ld g=%ld pq=%d qp=%d",
@@ -126,8 +128,11 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp)
                   rdp->dynticks->dynticks_nmi_nesting,
                   rdp->dynticks_fqs);
        seq_printf(m, " of=%lu", rdp->offline_fqs);
+       rcu_nocb_q_lengths(rdp, &ql, &qll);
+       qll += rdp->qlen_lazy;
+       ql += rdp->qlen;
        seq_printf(m, " ql=%ld/%ld qs=%c%c%c%c",
-                  rdp->qlen_lazy, rdp->qlen,
+                  qll, ql,
                   ".N"[rdp->nxttail[RCU_NEXT_READY_TAIL] !=
                        rdp->nxttail[RCU_NEXT_TAIL]],
                   ".R"[rdp->nxttail[RCU_WAIT_TAIL] !=
@@ -143,8 +148,9 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp)
                   per_cpu(rcu_cpu_kthread_loops, rdp->cpu) & 0xffff);
 #endif /* #ifdef CONFIG_RCU_BOOST */
        seq_printf(m, " b=%ld", rdp->blimit);
-       seq_printf(m, " ci=%lu co=%lu ca=%lu\n",
-                  rdp->n_cbs_invoked, rdp->n_cbs_orphaned, rdp->n_cbs_adopted);
+       seq_printf(m, " ci=%lu nci=%lu co=%lu ca=%lu\n",
+                  rdp->n_cbs_invoked, rdp->n_nocbs_invoked,
+                  rdp->n_cbs_orphaned, rdp->n_cbs_adopted);
 }
 
 static int show_rcudata(struct seq_file *m, void *v)
@@ -173,6 +179,38 @@ static const struct file_operations rcudata_fops = {
        .release = seq_release,
 };
 
+static int show_rcuexp(struct seq_file *m, void *v)
+{
+       struct rcu_state *rsp = (struct rcu_state *)m->private;
+
+       seq_printf(m, "s=%lu d=%lu w=%lu tf=%lu wd1=%lu wd2=%lu n=%lu sc=%lu dt=%lu dl=%lu dx=%lu\n",
+                  atomic_long_read(&rsp->expedited_start),
+                  atomic_long_read(&rsp->expedited_done),
+                  atomic_long_read(&rsp->expedited_wrap),
+                  atomic_long_read(&rsp->expedited_tryfail),
+                  atomic_long_read(&rsp->expedited_workdone1),
+                  atomic_long_read(&rsp->expedited_workdone2),
+                  atomic_long_read(&rsp->expedited_normal),
+                  atomic_long_read(&rsp->expedited_stoppedcpus),
+                  atomic_long_read(&rsp->expedited_done_tries),
+                  atomic_long_read(&rsp->expedited_done_lost),
+                  atomic_long_read(&rsp->expedited_done_exit));
+       return 0;
+}
+
+static int rcuexp_open(struct inode *inode, struct file *file)
+{
+       return single_open(file, show_rcuexp, inode->i_private);
+}
+
+static const struct file_operations rcuexp_fops = {
+       .owner = THIS_MODULE,
+       .open = rcuexp_open,
+       .read = seq_read,
+       .llseek = no_llseek,
+       .release = seq_release,
+};
+
 #ifdef CONFIG_RCU_BOOST
 
 static void print_one_rcu_node_boost(struct seq_file *m, struct rcu_node *rnp)
@@ -405,6 +443,11 @@ static int __init rcutree_trace_init(void)
                if (!retval)
                        goto free_out;
 
+               retval = debugfs_create_file("rcuexp", 0444,
+                               rspdir, rsp, &rcuexp_fops);
+               if (!retval)
+                       goto free_out;
+
                retval = debugfs_create_file("rcu_pending", 0444,
                                rspdir, rsp, &rcu_pending_fops);
                if (!retval)