mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-16 01:04:08 +08:00
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: Ilya Dryomov <ilya.dryomov@inktank.com> Reviewed-by: Alex Elder <elder@linaro.org>
This commit is contained in:
parent
ec7af97258
commit
35a935d75d
@ -60,8 +60,13 @@ struct ceph_object_id {
|
|||||||
struct ceph_pg_mapping {
|
struct ceph_pg_mapping {
|
||||||
struct rb_node node;
|
struct rb_node node;
|
||||||
struct ceph_pg pgid;
|
struct ceph_pg pgid;
|
||||||
int len;
|
|
||||||
int osds[];
|
union {
|
||||||
|
struct {
|
||||||
|
int len;
|
||||||
|
int osds[];
|
||||||
|
} pg_temp;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ceph_osdmap {
|
struct ceph_osdmap {
|
||||||
|
@ -88,9 +88,9 @@ static int osdmap_show(struct seq_file *s, void *p)
|
|||||||
|
|
||||||
seq_printf(s, "pg_temp %llu.%x [", pg->pgid.pool,
|
seq_printf(s, "pg_temp %llu.%x [", pg->pgid.pool,
|
||||||
pg->pgid.seed);
|
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 ? "" : ","),
|
seq_printf(s, "%s%d", (i == 0 ? "" : ","),
|
||||||
pg->osds[i]);
|
pg->pg_temp.osds[i]);
|
||||||
seq_printf(s, "]\n");
|
seq_printf(s, "]\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -822,9 +822,9 @@ static int __decode_pg_temp(void **p, void *end, struct ceph_osdmap *map,
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
pg->pgid = pgid;
|
pg->pgid = pgid;
|
||||||
pg->len = len;
|
pg->pg_temp.len = len;
|
||||||
for (i = 0; i < len; i++)
|
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);
|
ret = __insert_pg_mapping(pg, &map->pg_temp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@ -1281,8 +1281,8 @@ static int *calc_pg_raw(struct ceph_osdmap *osdmap, struct ceph_pg pgid,
|
|||||||
pool->pg_num_mask);
|
pool->pg_num_mask);
|
||||||
pg = __lookup_pg_mapping(&osdmap->pg_temp, pgid);
|
pg = __lookup_pg_mapping(&osdmap->pg_temp, pgid);
|
||||||
if (pg) {
|
if (pg) {
|
||||||
*num = pg->len;
|
*num = pg->pg_temp.len;
|
||||||
return pg->osds;
|
return pg->pg_temp.osds;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* crush */
|
/* crush */
|
||||||
|
Loading…
Reference in New Issue
Block a user