Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 188697
b: refs/heads/master
c: 02f90c6
h: refs/heads/master
i:
  188695: 6ebfa96
v: v3
  • Loading branch information
Sage Weil committed Feb 11, 2010
1 parent febf609 commit 78b76d7
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f5a2041bd96c9f05ff10172b9c814c14f247084e
refs/heads/master: 02f90c61096ec3ad691e808a4aa7ca5a06e550ec
20 changes: 20 additions & 0 deletions trunk/fs/ceph/osdmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand All @@ -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]);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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]);
Expand Down
8 changes: 8 additions & 0 deletions trunk/fs/ceph/rados.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@

#include "msgr.h"

/*
* osdmap encoding versions
*/
#define CEPH_OSDMAP_INC_VERSION 3
#define CEPH_OSDMAP_VERSION 3

/*
* fs id
*/
Expand Down Expand Up @@ -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 */
Expand All @@ -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));

/*
Expand Down

0 comments on commit 78b76d7

Please sign in to comment.