In preparation for adding support for primary_temp mappings, generalize
struct ceph_pg_mapping so it can hold mappings other than pg_temp.

Signed-off-by: Ilya Dryomov <[email protected]>
---
 include/linux/ceph/osdmap.h |    9 +++++++--
 net/ceph/debugfs.c          |    4 ++--
 net/ceph/osdmap.c           |    8 ++++----
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/include/linux/ceph/osdmap.h b/include/linux/ceph/osdmap.h
index 46c3e304c3d8..4837e58e3203 100644
--- a/include/linux/ceph/osdmap.h
+++ b/include/linux/ceph/osdmap.h
@@ -60,8 +60,13 @@ struct ceph_object_id {
 struct ceph_pg_mapping {
        struct rb_node node;
        struct ceph_pg pgid;
-       int len;
-       int osds[];
+
+       union {
+               struct {
+                       int len;
+                       int osds[];
+               } pg_temp;
+       };
 };
 
 struct ceph_osdmap {
diff --git a/net/ceph/debugfs.c b/net/ceph/debugfs.c
index c45d235e774e..5865f2c9580a 100644
--- a/net/ceph/debugfs.c
+++ b/net/ceph/debugfs.c
@@ -88,9 +88,9 @@ static int osdmap_show(struct seq_file *s, void *p)
 
                seq_printf(s, "pg_temp %llu.%x [", pg->pgid.pool,
                           pg->pgid.seed);
-               for (i = 0; i < pg->len; i++)
+               for (i = 0; i < pg->pg_temp.len; i++)
                        seq_printf(s, "%s%d", (i == 0 ? "" : ","),
-                                  pg->osds[i]);
+                                  pg->pg_temp.osds[i]);
                seq_printf(s, "]\n");
        }
 
diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c
index ae96c73aff71..401af78ad741 100644
--- a/net/ceph/osdmap.c
+++ b/net/ceph/osdmap.c
@@ -822,9 +822,9 @@ static int __decode_pg_temp(void **p, void *end, struct 
ceph_osdmap *map,
                                return -ENOMEM;
 
                        pg->pgid = pgid;
-                       pg->len = len;
+                       pg->pg_temp.len = len;
                        for (i = 0; i < len; i++)
-                               pg->osds[i] = ceph_decode_32(p);
+                               pg->pg_temp.osds[i] = ceph_decode_32(p);
 
                        ret = __insert_pg_mapping(pg, &map->pg_temp);
                        if (ret) {
@@ -1275,8 +1275,8 @@ static int *calc_pg_raw(struct ceph_osdmap *osdmap, 
struct ceph_pg pgid,
                                    pool->pg_num_mask);
        pg = __lookup_pg_mapping(&osdmap->pg_temp, pgid);
        if (pg) {
-               *num = pg->len;
-               return pg->osds;
+               *num = pg->pg_temp.len;
+               return pg->pg_temp.osds;
        }
 
        /* crush */
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to