Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 35a935d7 authored by Ilya Dryomov's avatar Ilya Dryomov Committed by Sage Weil
Browse files

libceph: generalize ceph_pg_mapping



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: default avatarIlya Dryomov <ilya.dryomov@inktank.com>
Reviewed-by: default avatarAlex Elder <elder@linaro.org>
parent ec7af972
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -60,8 +60,13 @@ struct ceph_object_id {
struct ceph_pg_mapping {
	struct rb_node node;
	struct ceph_pg pgid;

	union {
		struct {
			int len;
			int osds[];
		} pg_temp;
	};
};

struct ceph_osdmap {
+2 −2
Original line number Diff line number Diff line
@@ -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");
	}

+4 −4
Original line number Diff line number Diff line
@@ -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) {
@@ -1281,8 +1281,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 */