libceph: dump pg_temp mappings to debugfs
authorIlya Dryomov <ilya.dryomov@inktank.com>
Thu, 13 Mar 2014 14:36:13 +0000 (16:36 +0200)
committerSage Weil <sage@inktank.com>
Sat, 5 Apr 2014 04:07:34 +0000 (21:07 -0700)
Dump pg_temp mappings to /sys/kernel/debug/ceph/<client>/osdmap,
one 'pg_temp <pgid> [<osd>, ..., <osd>]' per line, e.g:

    pg_temp 2.6 [2,3,4]

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Reviewed-by: Alex Elder <elder@linaro.org>
net/ceph/debugfs.c

index 112d98edb156fea3e003884c7b2bd8d4491da0e1..c45d235e774ea4423d1e3cc8efa4a9abee00a582 100644 (file)
@@ -82,6 +82,17 @@ static int osdmap_show(struct seq_file *s, void *p)
                           ((map->osd_weight[i]*100) >> 16),
                           ceph_osdmap_state_str(sb, sizeof(sb), state));
        }
+       for (n = rb_first(&map->pg_temp); n; n = rb_next(n)) {
+               struct ceph_pg_mapping *pg =
+                       rb_entry(n, struct ceph_pg_mapping, node);
+
+               seq_printf(s, "pg_temp %llu.%x [", pg->pgid.pool,
+                          pg->pgid.seed);
+               for (i = 0; i < pg->len; i++)
+                       seq_printf(s, "%s%d", (i == 0 ? "" : ","),
+                                  pg->osds[i]);
+               seq_printf(s, "]\n");
+       }
 
        return 0;
 }