aoe: fill in per-AoE-target information for debugfs file
authorEd Cashin <ecashin@coraid.com>
Wed, 11 Sep 2013 21:25:42 +0000 (14:25 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 11 Sep 2013 22:59:25 +0000 (15:59 -0700)
This information is presented in a compact format that has evolved for
easy routine scanning by expert humans, mostly developers and support
technicians helping to troubleshoot or test AoE-based systems.

Signed-off-by: Ed Cashin <ecashin@coraid.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/block/aoe/aoeblk.c

index 0511d38e412df5d8d77bcb04c542bebf2d421e87..b58cbeb43e05286e46b2e9e607a9e32b34a8c5a3 100644 (file)
@@ -113,11 +113,42 @@ static ssize_t aoedisk_show_payload(struct device *dev,
 static int aoedisk_debugfs_show(struct seq_file *s, void *ignored)
 {
        struct aoedev *d;
+       struct aoetgt **t, **te;
+       struct aoeif *ifp, *ife;
        unsigned long flags;
+       char c;
 
        d = s->private;
+       seq_printf(s, "rttavg: %d rttdev: %d\n",
+               d->rttavg >> RTTSCALE,
+               d->rttdev >> RTTDSCALE);
+       seq_printf(s, "nskbpool: %d\n", skb_queue_len(&d->skbpool));
+       seq_printf(s, "kicked: %ld\n", d->kicked);
+       seq_printf(s, "maxbcnt: %ld\n", d->maxbcnt);
+       seq_printf(s, "ref: %ld\n", d->ref);
+
        spin_lock_irqsave(&d->lock, flags);
-       seq_printf(s, "%s\n", d->gd->disk_name); /* place holder */
+       t = d->targets;
+       te = t + d->ntargets;
+       for (; t < te && *t; t++) {
+               c = '\t';
+               seq_printf(s, "falloc: %ld\n", (*t)->falloc);
+               seq_printf(s, "ffree: %p\n",
+                       list_empty(&(*t)->ffree) ? NULL : (*t)->ffree.next);
+               seq_printf(s, "%pm:%d:%d:%d\n", (*t)->addr, (*t)->nout,
+                       (*t)->maxout, (*t)->nframes);
+               seq_printf(s, "\tssthresh:%d\n", (*t)->ssthresh);
+               seq_printf(s, "\ttaint:%d\n", (*t)->taint);
+               seq_printf(s, "\tr:%d\n", (*t)->rpkts);
+               seq_printf(s, "\tw:%d\n", (*t)->wpkts);
+               ifp = (*t)->ifs;
+               ife = ifp + ARRAY_SIZE((*t)->ifs);
+               for (; ifp->nd && ifp < ife; ifp++) {
+                       seq_printf(s, "%c%s", c, ifp->nd->name);
+                       c = ',';
+               }
+               seq_puts(s, "\n");
+       }
        spin_unlock_irqrestore(&d->lock, flags);
 
        return 0;