diff options
Diffstat (limited to 'fs/ceph/osdmap.c')
| -rw-r--r-- | fs/ceph/osdmap.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/fs/ceph/osdmap.c b/fs/ceph/osdmap.c index b83f2692b835..21c6623c4b07 100644 --- a/fs/ceph/osdmap.c +++ b/fs/ceph/osdmap.c | |||
| @@ -1,4 +1,7 @@ | |||
| 1 | 1 | ||
| 2 | #include "ceph_debug.h" | ||
| 3 | |||
| 4 | #include <linux/slab.h> | ||
| 2 | #include <asm/div64.h> | 5 | #include <asm/div64.h> |
| 3 | 6 | ||
| 4 | #include "super.h" | 7 | #include "super.h" |
| @@ -6,7 +9,6 @@ | |||
| 6 | #include "crush/hash.h" | 9 | #include "crush/hash.h" |
| 7 | #include "crush/mapper.h" | 10 | #include "crush/mapper.h" |
| 8 | #include "decode.h" | 11 | #include "decode.h" |
| 9 | #include "ceph_debug.h" | ||
| 10 | 12 | ||
| 11 | char *ceph_osdmap_state_str(char *str, int len, int state) | 13 | char *ceph_osdmap_state_str(char *str, int len, int state) |
| 12 | { | 14 | { |
| @@ -480,6 +482,14 @@ static struct ceph_pg_pool_info *__lookup_pg_pool(struct rb_root *root, int id) | |||
| 480 | return NULL; | 482 | return NULL; |
| 481 | } | 483 | } |
| 482 | 484 | ||
| 485 | void __decode_pool(void **p, struct ceph_pg_pool_info *pi) | ||
| 486 | { | ||
| 487 | ceph_decode_copy(p, &pi->v, sizeof(pi->v)); | ||
| 488 | calc_pg_masks(pi); | ||
| 489 | *p += le32_to_cpu(pi->v.num_snaps) * sizeof(u64); | ||
| 490 | *p += le32_to_cpu(pi->v.num_removed_snap_intervals) * sizeof(u64) * 2; | ||
| 491 | } | ||
| 492 | |||
| 483 | /* | 493 | /* |
| 484 | * decode a full map. | 494 | * decode a full map. |
| 485 | */ | 495 | */ |
| @@ -526,12 +536,8 @@ struct ceph_osdmap *osdmap_decode(void **p, void *end) | |||
| 526 | ev, CEPH_PG_POOL_VERSION); | 536 | ev, CEPH_PG_POOL_VERSION); |
| 527 | goto bad; | 537 | goto bad; |
| 528 | } | 538 | } |
| 529 | ceph_decode_copy(p, &pi->v, sizeof(pi->v)); | 539 | __decode_pool(p, pi); |
| 530 | __insert_pg_pool(&map->pg_pools, pi); | 540 | __insert_pg_pool(&map->pg_pools, pi); |
| 531 | calc_pg_masks(pi); | ||
| 532 | *p += le32_to_cpu(pi->v.num_snaps) * sizeof(u64); | ||
| 533 | *p += le32_to_cpu(pi->v.num_removed_snap_intervals) | ||
| 534 | * sizeof(u64) * 2; | ||
| 535 | } | 541 | } |
| 536 | ceph_decode_32_safe(p, end, map->pool_max, bad); | 542 | ceph_decode_32_safe(p, end, map->pool_max, bad); |
| 537 | 543 | ||
| @@ -714,8 +720,7 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, | |||
| 714 | pi->id = pool; | 720 | pi->id = pool; |
| 715 | __insert_pg_pool(&map->pg_pools, pi); | 721 | __insert_pg_pool(&map->pg_pools, pi); |
| 716 | } | 722 | } |
| 717 | ceph_decode_copy(p, &pi->v, sizeof(pi->v)); | 723 | __decode_pool(p, pi); |
| 718 | calc_pg_masks(pi); | ||
| 719 | } | 724 | } |
| 720 | 725 | ||
| 721 | /* old_pool */ | 726 | /* old_pool */ |
