ceph: add uid field to ceph_pg_pool
Also verify encoding version as we go. Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
Родитель
f5a2041bd9
Коммит
02f90c6109
|
@ -426,6 +426,11 @@ struct ceph_osdmap *osdmap_decode(void **p, void *end)
|
|||
map->pg_temp = RB_ROOT;
|
||||
|
||||
ceph_decode_16_safe(p, end, version, bad);
|
||||
if (version > CEPH_OSDMAP_VERSION) {
|
||||
pr_warning("got unknown v %d > %d of osdmap\n", version,
|
||||
CEPH_OSDMAP_VERSION);
|
||||
goto bad;
|
||||
}
|
||||
|
||||
ceph_decode_need(p, end, 2*sizeof(u64)+6*sizeof(u32), bad);
|
||||
ceph_decode_copy(p, &map->fsid, sizeof(map->fsid));
|
||||
|
@ -447,6 +452,11 @@ struct ceph_osdmap *osdmap_decode(void **p, void *end)
|
|||
if (i >= map->num_pools)
|
||||
goto bad;
|
||||
ev = ceph_decode_8(p); /* encoding version */
|
||||
if (ev > CEPH_PG_POOL_VERSION) {
|
||||
pr_warning("got unknown v %d > %d of ceph_pg_pool\n",
|
||||
ev, CEPH_PG_POOL_VERSION);
|
||||
goto bad;
|
||||
}
|
||||
ceph_decode_copy(p, &map->pg_pool[i].v,
|
||||
sizeof(map->pg_pool->v));
|
||||
calc_pg_masks(&map->pg_pool[i]);
|
||||
|
@ -552,6 +562,11 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
|
|||
struct rb_node *rbp;
|
||||
|
||||
ceph_decode_16_safe(p, end, version, bad);
|
||||
if (version > CEPH_OSDMAP_INC_VERSION) {
|
||||
pr_warning("got unknown v %d > %d of inc osdmap\n", version,
|
||||
CEPH_OSDMAP_INC_VERSION);
|
||||
goto bad;
|
||||
}
|
||||
|
||||
ceph_decode_need(p, end, sizeof(fsid)+sizeof(modified)+2*sizeof(u32),
|
||||
bad);
|
||||
|
@ -624,6 +639,11 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
|
|||
}
|
||||
ceph_decode_need(p, end, 1 + sizeof(map->pg_pool->v), bad);
|
||||
ev = ceph_decode_8(p); /* encoding version */
|
||||
if (ev > CEPH_PG_POOL_VERSION) {
|
||||
pr_warning("got unknown v %d > %d of ceph_pg_pool\n",
|
||||
ev, CEPH_PG_POOL_VERSION);
|
||||
goto bad;
|
||||
}
|
||||
ceph_decode_copy(p, &map->pg_pool[pool].v,
|
||||
sizeof(map->pg_pool->v));
|
||||
calc_pg_masks(&map->pg_pool[pool]);
|
||||
|
|
|
@ -8,6 +8,12 @@
|
|||
|
||||
#include "msgr.h"
|
||||
|
||||
/*
|
||||
* osdmap encoding versions
|
||||
*/
|
||||
#define CEPH_OSDMAP_INC_VERSION 3
|
||||
#define CEPH_OSDMAP_VERSION 3
|
||||
|
||||
/*
|
||||
* fs id
|
||||
*/
|
||||
|
@ -80,6 +86,7 @@ struct ceph_pg {
|
|||
*/
|
||||
#define CEPH_PG_TYPE_REP 1
|
||||
#define CEPH_PG_TYPE_RAID4 2
|
||||
#define CEPH_PG_POOL_VERSION 2
|
||||
struct ceph_pg_pool {
|
||||
__u8 type; /* CEPH_PG_TYPE_* */
|
||||
__u8 size; /* number of osds in each pg */
|
||||
|
@ -92,6 +99,7 @@ struct ceph_pg_pool {
|
|||
__le32 snap_epoch; /* epoch of last snap */
|
||||
__le32 num_snaps;
|
||||
__le32 num_removed_snap_intervals;
|
||||
__le64 uid;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче