diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/ceph/osdmap.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/fs/ceph/osdmap.c b/fs/ceph/osdmap.c index b83f2692b835..d82fe87c2a6e 100644 --- a/fs/ceph/osdmap.c +++ b/fs/ceph/osdmap.c | |||
| @@ -480,6 +480,14 @@ static struct ceph_pg_pool_info *__lookup_pg_pool(struct rb_root *root, int id) | |||
| 480 | return NULL; | 480 | return NULL; |
| 481 | } | 481 | } |
| 482 | 482 | ||
| 483 | void __decode_pool(void **p, struct ceph_pg_pool_info *pi) | ||
| 484 | { | ||
| 485 | ceph_decode_copy(p, &pi->v, sizeof(pi->v)); | ||
| 486 | calc_pg_masks(pi); | ||
| 487 | *p += le32_to_cpu(pi->v.num_snaps) * sizeof(u64); | ||
| 488 | *p += le32_to_cpu(pi->v.num_removed_snap_intervals) * sizeof(u64) * 2; | ||
| 489 | } | ||
| 490 | |||
| 483 | /* | 491 | /* |
| 484 | * decode a full map. | 492 | * decode a full map. |
| 485 | */ | 493 | */ |
| @@ -526,12 +534,8 @@ struct ceph_osdmap *osdmap_decode(void **p, void *end) | |||
| 526 | ev, CEPH_PG_POOL_VERSION); | 534 | ev, CEPH_PG_POOL_VERSION); |
| 527 | goto bad; | 535 | goto bad; |
| 528 | } | 536 | } |
| 529 | ceph_decode_copy(p, &pi->v, sizeof(pi->v)); | 537 | __decode_pool(p, pi); |
| 530 | __insert_pg_pool(&map->pg_pools, pi); | 538 | __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 | } | 539 | } |
| 536 | ceph_decode_32_safe(p, end, map->pool_max, bad); | 540 | ceph_decode_32_safe(p, end, map->pool_max, bad); |
| 537 | 541 | ||
| @@ -714,8 +718,7 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, | |||
| 714 | pi->id = pool; | 718 | pi->id = pool; |
| 715 | __insert_pg_pool(&map->pg_pools, pi); | 719 | __insert_pg_pool(&map->pg_pools, pi); |
| 716 | } | 720 | } |
| 717 | ceph_decode_copy(p, &pi->v, sizeof(pi->v)); | 721 | __decode_pool(p, pi); |
| 718 | calc_pg_masks(pi); | ||
| 719 | } | 722 | } |
| 720 | 723 | ||
| 721 | /* old_pool */ | 724 | /* old_pool */ |
