libceph: take osdc->lock in osdmap_show() and dump flags in hex
authorIlya Dryomov <idryomov@gmail.com>
Thu, 28 Apr 2016 14:07:27 +0000 (16:07 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 25 May 2016 23:15:29 +0000 (01:15 +0200)
There is now about a dozen CEPH_OSDMAP_* flags.  This is a debugging
interface, so just dump in hex instead of spelling each flag out.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
net/ceph/debugfs.c

index 39f91c7250f6e830d1153f7bfce157827e9efd7b..6e434c75cd08c1617cb80b142afc5c950752dbdf 100644 (file)
@@ -54,16 +54,15 @@ static int osdmap_show(struct seq_file *s, void *p)
 {
        int i;
        struct ceph_client *client = s->private;
-       struct ceph_osdmap *map = client->osdc.osdmap;
+       struct ceph_osd_client *osdc = &client->osdc;
+       struct ceph_osdmap *map = osdc->osdmap;
        struct rb_node *n;
 
        if (map == NULL)
                return 0;
 
-       seq_printf(s, "epoch %d\n", map->epoch);
-       seq_printf(s, "flags%s%s\n",
-                  (map->flags & CEPH_OSDMAP_NEARFULL) ?  " NEARFULL" : "",
-                  (map->flags & CEPH_OSDMAP_FULL) ?  " FULL" : "");
+       down_read(&osdc->lock);
+       seq_printf(s, "epoch %d flags 0x%x\n", map->epoch, map->flags);
 
        for (n = rb_first(&map->pg_pools); n; n = rb_next(n)) {
                struct ceph_pg_pool_info *pi =
@@ -105,6 +104,7 @@ static int osdmap_show(struct seq_file *s, void *p)
                           pg->pgid.seed, pg->primary_temp.osd);
        }
 
+       up_read(&osdc->lock);
        return 0;
 }