ceph: precede encoded ceph_pg_pool struct with version
Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
parent
0d59ab81c3
commit
361be8601d
2 changed files with 8 additions and 2 deletions
|
@ -38,7 +38,7 @@
|
||||||
#define CEPH_OSD_PROTOCOL 8 /* cluster internal */
|
#define CEPH_OSD_PROTOCOL 8 /* cluster internal */
|
||||||
#define CEPH_MDS_PROTOCOL 9 /* cluster internal */
|
#define CEPH_MDS_PROTOCOL 9 /* cluster internal */
|
||||||
#define CEPH_MON_PROTOCOL 5 /* cluster internal */
|
#define CEPH_MON_PROTOCOL 5 /* cluster internal */
|
||||||
#define CEPH_OSDC_PROTOCOL 22 /* server/client */
|
#define CEPH_OSDC_PROTOCOL 23 /* server/client */
|
||||||
#define CEPH_MDSC_PROTOCOL 32 /* server/client */
|
#define CEPH_MDSC_PROTOCOL 32 /* server/client */
|
||||||
#define CEPH_MONC_PROTOCOL 15 /* server/client */
|
#define CEPH_MONC_PROTOCOL 15 /* server/client */
|
||||||
|
|
||||||
|
|
|
@ -414,6 +414,7 @@ struct ceph_osdmap *osdmap_decode(void **p, void *end)
|
||||||
struct ceph_osdmap *map;
|
struct ceph_osdmap *map;
|
||||||
u16 version;
|
u16 version;
|
||||||
u32 len, max, i;
|
u32 len, max, i;
|
||||||
|
u8 ev;
|
||||||
int err = -EINVAL;
|
int err = -EINVAL;
|
||||||
void *start = *p;
|
void *start = *p;
|
||||||
|
|
||||||
|
@ -441,10 +442,11 @@ struct ceph_osdmap *osdmap_decode(void **p, void *end)
|
||||||
}
|
}
|
||||||
ceph_decode_32_safe(p, end, max, bad);
|
ceph_decode_32_safe(p, end, max, bad);
|
||||||
while (max--) {
|
while (max--) {
|
||||||
ceph_decode_need(p, end, 4+sizeof(map->pg_pool->v), bad);
|
ceph_decode_need(p, end, 4+1+sizeof(map->pg_pool->v), bad);
|
||||||
i = ceph_decode_32(p);
|
i = ceph_decode_32(p);
|
||||||
if (i >= map->num_pools)
|
if (i >= map->num_pools)
|
||||||
goto bad;
|
goto bad;
|
||||||
|
ev = ceph_decode_8(p); /* encoding version */
|
||||||
ceph_decode_copy(p, &map->pg_pool[i].v,
|
ceph_decode_copy(p, &map->pg_pool[i].v,
|
||||||
sizeof(map->pg_pool->v));
|
sizeof(map->pg_pool->v));
|
||||||
calc_pg_masks(&map->pg_pool[i]);
|
calc_pg_masks(&map->pg_pool[i]);
|
||||||
|
@ -603,6 +605,8 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
|
||||||
/* new_pool */
|
/* new_pool */
|
||||||
ceph_decode_32_safe(p, end, len, bad);
|
ceph_decode_32_safe(p, end, len, bad);
|
||||||
while (len--) {
|
while (len--) {
|
||||||
|
__u8 ev;
|
||||||
|
|
||||||
ceph_decode_32_safe(p, end, pool, bad);
|
ceph_decode_32_safe(p, end, pool, bad);
|
||||||
if (pool >= map->num_pools) {
|
if (pool >= map->num_pools) {
|
||||||
void *pg_pool = kcalloc(pool + 1,
|
void *pg_pool = kcalloc(pool + 1,
|
||||||
|
@ -618,6 +622,8 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
|
||||||
map->pg_pool = pg_pool;
|
map->pg_pool = pg_pool;
|
||||||
map->num_pools = pool+1;
|
map->num_pools = pool+1;
|
||||||
}
|
}
|
||||||
|
ceph_decode_need(p, end, 1 + sizeof(map->pg_pool->v), bad);
|
||||||
|
ev = ceph_decode_8(p); /* encoding version */
|
||||||
ceph_decode_copy(p, &map->pg_pool[pool].v,
|
ceph_decode_copy(p, &map->pg_pool[pool].v,
|
||||||
sizeof(map->pg_pool->v));
|
sizeof(map->pg_pool->v));
|
||||||
calc_pg_masks(&map->pg_pool[pool]);
|
calc_pg_masks(&map->pg_pool[pool]);
|
||||||
|
|
Loading…
Add table
Reference in a new issue