Lines Matching refs:p
55 static int crush_decode_uniform_bucket(void **p, void *end, in crush_decode_uniform_bucket() argument
58 dout("crush_decode_uniform_bucket %p to %p\n", *p, end); in crush_decode_uniform_bucket()
59 ceph_decode_need(p, end, (1+b->h.size) * sizeof(u32), bad); in crush_decode_uniform_bucket()
60 b->item_weight = ceph_decode_32(p); in crush_decode_uniform_bucket()
66 static int crush_decode_list_bucket(void **p, void *end, in crush_decode_list_bucket() argument
70 dout("crush_decode_list_bucket %p to %p\n", *p, end); in crush_decode_list_bucket()
77 ceph_decode_need(p, end, 2 * b->h.size * sizeof(u32), bad); in crush_decode_list_bucket()
79 b->item_weights[j] = ceph_decode_32(p); in crush_decode_list_bucket()
80 b->sum_weights[j] = ceph_decode_32(p); in crush_decode_list_bucket()
87 static int crush_decode_tree_bucket(void **p, void *end, in crush_decode_tree_bucket() argument
91 dout("crush_decode_tree_bucket %p to %p\n", *p, end); in crush_decode_tree_bucket()
92 ceph_decode_32_safe(p, end, b->num_nodes, bad); in crush_decode_tree_bucket()
96 ceph_decode_need(p, end, b->num_nodes * sizeof(u32), bad); in crush_decode_tree_bucket()
98 b->node_weights[j] = ceph_decode_32(p); in crush_decode_tree_bucket()
104 static int crush_decode_straw_bucket(void **p, void *end, in crush_decode_straw_bucket() argument
108 dout("crush_decode_straw_bucket %p to %p\n", *p, end); in crush_decode_straw_bucket()
115 ceph_decode_need(p, end, 2 * b->h.size * sizeof(u32), bad); in crush_decode_straw_bucket()
117 b->item_weights[j] = ceph_decode_32(p); in crush_decode_straw_bucket()
118 b->straws[j] = ceph_decode_32(p); in crush_decode_straw_bucket()
125 static int skip_name_map(void **p, void *end) in skip_name_map() argument
128 ceph_decode_32_safe(p, end, len ,bad); in skip_name_map()
131 *p += sizeof(u32); in skip_name_map()
132 ceph_decode_32_safe(p, end, strlen, bad); in skip_name_map()
133 *p += strlen; in skip_name_map()
145 void **p = &pbyval; in crush_decode() local
150 dout("crush_decode %p to %p len %d\n", *p, end, (int)(end - *p)); in crush_decode()
162 ceph_decode_need(p, end, 4*sizeof(u32), bad); in crush_decode()
163 magic = ceph_decode_32(p); in crush_decode()
169 c->max_buckets = ceph_decode_32(p); in crush_decode()
170 c->max_rules = ceph_decode_32(p); in crush_decode()
171 c->max_devices = ceph_decode_32(p); in crush_decode()
186 ceph_decode_32_safe(p, end, alg, bad); in crush_decode()
192 i, (int)(*p-start), *p, end); in crush_decode()
216 ceph_decode_need(p, end, 4*sizeof(u32), bad); in crush_decode()
217 b->id = ceph_decode_32(p); in crush_decode()
218 b->type = ceph_decode_16(p); in crush_decode()
219 b->alg = ceph_decode_8(p); in crush_decode()
220 b->hash = ceph_decode_8(p); in crush_decode()
221 b->weight = ceph_decode_32(p); in crush_decode()
222 b->size = ceph_decode_32(p); in crush_decode()
225 b->size, (int)(*p-start), *p, end); in crush_decode()
235 ceph_decode_need(p, end, b->size*sizeof(u32), bad); in crush_decode()
237 b->items[j] = ceph_decode_32(p); in crush_decode()
241 err = crush_decode_uniform_bucket(p, end, in crush_decode()
247 err = crush_decode_list_bucket(p, end, in crush_decode()
253 err = crush_decode_tree_bucket(p, end, in crush_decode()
259 err = crush_decode_straw_bucket(p, end, in crush_decode()
273 ceph_decode_32_safe(p, end, yes, bad); in crush_decode()
276 i, (int)(*p-start), *p, end); in crush_decode()
282 i, (int)(*p-start), *p, end); in crush_decode()
285 ceph_decode_32_safe(p, end, yes, bad); in crush_decode()
299 ceph_decode_copy_safe(p, end, &r->mask, 4, bad); /* 4 u8's */ in crush_decode()
300 ceph_decode_need(p, end, r->len*3*sizeof(u32), bad); in crush_decode()
302 r->steps[j].op = ceph_decode_32(p); in crush_decode()
303 r->steps[j].arg1 = ceph_decode_32(p); in crush_decode()
304 r->steps[j].arg2 = ceph_decode_32(p); in crush_decode()
310 err = skip_name_map(p, end); in crush_decode()
316 ceph_decode_need(p, end, 3*sizeof(u32), done); in crush_decode()
317 c->choose_local_tries = ceph_decode_32(p); in crush_decode()
318 c->choose_local_fallback_tries = ceph_decode_32(p); in crush_decode()
319 c->choose_total_tries = ceph_decode_32(p); in crush_decode()
327 ceph_decode_need(p, end, sizeof(u32), done); in crush_decode()
328 c->chooseleaf_descend_once = ceph_decode_32(p); in crush_decode()
364 struct rb_node **p = &root->rb_node; in __insert_pg_mapping() local
370 while (*p) { in __insert_pg_mapping()
371 parent = *p; in __insert_pg_mapping()
375 p = &(*p)->rb_left; in __insert_pg_mapping()
377 p = &(*p)->rb_right; in __insert_pg_mapping()
382 rb_link_node(&new->node, parent, p); in __insert_pg_mapping()
430 struct rb_node **p = &root->rb_node; in __insert_pg_pool() local
434 while (*p) { in __insert_pg_pool()
435 parent = *p; in __insert_pg_pool()
438 p = &(*p)->rb_left; in __insert_pg_pool()
440 p = &(*p)->rb_right; in __insert_pg_pool()
445 rb_link_node(&new->node, parent, p); in __insert_pg_pool()
504 static int __decode_pool(void **p, void *end, struct ceph_pg_pool_info *pi) in __decode_pool() argument
510 ceph_decode_need(p, end, 2 + 4, bad); in __decode_pool()
511 ev = ceph_decode_8(p); /* encoding version */ in __decode_pool()
512 cv = ceph_decode_8(p); /* compat version */ in __decode_pool()
521 len = ceph_decode_32(p); in __decode_pool()
522 ceph_decode_need(p, end, len, bad); in __decode_pool()
523 pool_end = *p + len; in __decode_pool()
525 pi->type = ceph_decode_8(p); in __decode_pool()
526 pi->size = ceph_decode_8(p); in __decode_pool()
527 pi->crush_ruleset = ceph_decode_8(p); in __decode_pool()
528 pi->object_hash = ceph_decode_8(p); in __decode_pool()
530 pi->pg_num = ceph_decode_32(p); in __decode_pool()
531 pi->pgp_num = ceph_decode_32(p); in __decode_pool()
533 *p += 4 + 4; /* skip lpg* */ in __decode_pool()
534 *p += 4; /* skip last_change */ in __decode_pool()
535 *p += 8 + 4; /* skip snap_seq, snap_epoch */ in __decode_pool()
538 num = ceph_decode_32(p); in __decode_pool()
540 *p += 8; /* snapid key */ in __decode_pool()
541 *p += 1 + 1; /* versions */ in __decode_pool()
542 len = ceph_decode_32(p); in __decode_pool()
543 *p += len; in __decode_pool()
547 num = ceph_decode_32(p); in __decode_pool()
548 *p += num * (8 + 8); in __decode_pool()
550 *p += 8; /* skip auid */ in __decode_pool()
551 pi->flags = ceph_decode_64(p); in __decode_pool()
555 *p = pool_end; in __decode_pool()
563 static int __decode_pool_names(void **p, void *end, struct ceph_osdmap *map) in __decode_pool_names() argument
569 ceph_decode_32_safe(p, end, num, bad); in __decode_pool_names()
572 ceph_decode_64_safe(p, end, pool, bad); in __decode_pool_names()
573 ceph_decode_32_safe(p, end, len, bad); in __decode_pool_names()
575 ceph_decode_need(p, end, len, bad); in __decode_pool_names()
578 char *name = kstrndup(*p, len, GFP_NOFS); in __decode_pool_names()
586 *p += len; in __decode_pool_names()
660 struct ceph_osdmap *osdmap_decode(void **p, void *end) in osdmap_decode() argument
666 void *start = *p; in osdmap_decode()
669 dout("osdmap_decode %p to %p len %d\n", *p, end, (int)(end - *p)); in osdmap_decode()
676 ceph_decode_16_safe(p, end, version, bad); in osdmap_decode()
686 ceph_decode_need(p, end, 2*sizeof(u64)+6*sizeof(u32), bad); in osdmap_decode()
687 ceph_decode_copy(p, &map->fsid, sizeof(map->fsid)); in osdmap_decode()
688 map->epoch = ceph_decode_32(p); in osdmap_decode()
689 ceph_decode_copy(p, &map->created, sizeof(map->created)); in osdmap_decode()
690 ceph_decode_copy(p, &map->modified, sizeof(map->modified)); in osdmap_decode()
692 ceph_decode_32_safe(p, end, max, bad); in osdmap_decode()
694 ceph_decode_need(p, end, 8 + 2, bad); in osdmap_decode()
699 pi->id = ceph_decode_64(p); in osdmap_decode()
700 err = __decode_pool(p, end, pi); in osdmap_decode()
708 err = __decode_pool_names(p, end, map); in osdmap_decode()
714 ceph_decode_32_safe(p, end, map->pool_max, bad); in osdmap_decode()
716 ceph_decode_32_safe(p, end, map->flags, bad); in osdmap_decode()
718 max = ceph_decode_32(p); in osdmap_decode()
728 ceph_decode_need(p, end, 3*sizeof(u32) + in osdmap_decode()
731 *p += 4; /* skip length field (should match max) */ in osdmap_decode()
732 ceph_decode_copy(p, map->osd_state, map->max_osd); in osdmap_decode()
734 *p += 4; /* skip length field (should match max) */ in osdmap_decode()
736 map->osd_weight[i] = ceph_decode_32(p); in osdmap_decode()
738 *p += 4; /* skip length field (should match max) */ in osdmap_decode()
739 ceph_decode_copy(p, map->osd_addr, map->max_osd*sizeof(*map->osd_addr)); in osdmap_decode()
744 ceph_decode_32_safe(p, end, len, bad); in osdmap_decode()
750 err = ceph_decode_pgid(p, end, &pgid); in osdmap_decode()
753 ceph_decode_need(p, end, sizeof(u32), bad); in osdmap_decode()
754 n = ceph_decode_32(p); in osdmap_decode()
758 ceph_decode_need(p, end, n * sizeof(u32), bad); in osdmap_decode()
766 pg->osds[j] = ceph_decode_32(p); in osdmap_decode()
776 ceph_decode_32_safe(p, end, len, bad); in osdmap_decode()
778 (int)(*p - start)); in osdmap_decode()
779 ceph_decode_need(p, end, len, bad); in osdmap_decode()
780 map->crush = crush_decode(*p, end); in osdmap_decode()
781 *p += len; in osdmap_decode()
789 *p = end; in osdmap_decode()
791 dout("osdmap_decode done %p %p\n", *p, end); in osdmap_decode()
803 struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, in osdmap_apply_incremental() argument
815 void *start = *p; in osdmap_apply_incremental()
819 ceph_decode_16_safe(p, end, version, bad); in osdmap_apply_incremental()
825 ceph_decode_need(p, end, sizeof(fsid)+sizeof(modified)+2*sizeof(u32), in osdmap_apply_incremental()
827 ceph_decode_copy(p, &fsid, sizeof(fsid)); in osdmap_apply_incremental()
828 epoch = ceph_decode_32(p); in osdmap_apply_incremental()
830 ceph_decode_copy(p, &modified, sizeof(modified)); in osdmap_apply_incremental()
831 new_pool_max = ceph_decode_64(p); in osdmap_apply_incremental()
832 new_flags = ceph_decode_32(p); in osdmap_apply_incremental()
835 ceph_decode_32_safe(p, end, len, bad); in osdmap_apply_incremental()
838 len, *p, end); in osdmap_apply_incremental()
839 return osdmap_decode(p, min(*p+len, end)); in osdmap_apply_incremental()
843 ceph_decode_32_safe(p, end, len, bad); in osdmap_apply_incremental()
846 len, *p, end); in osdmap_apply_incremental()
847 newcrush = crush_decode(*p, min(*p+len, end)); in osdmap_apply_incremental()
850 *p += len; in osdmap_apply_incremental()
859 ceph_decode_need(p, end, 5*sizeof(u32), bad); in osdmap_apply_incremental()
862 max = ceph_decode_32(p); in osdmap_apply_incremental()
879 ceph_decode_32_safe(p, end, len, bad); in osdmap_apply_incremental()
883 ceph_decode_64_safe(p, end, pool, bad); in osdmap_apply_incremental()
894 err = __decode_pool(p, end, pi); in osdmap_apply_incremental()
899 err = __decode_pool_names(p, end, map); in osdmap_apply_incremental()
905 ceph_decode_32_safe(p, end, len, bad); in osdmap_apply_incremental()
909 ceph_decode_64_safe(p, end, pool, bad); in osdmap_apply_incremental()
917 ceph_decode_32_safe(p, end, len, bad); in osdmap_apply_incremental()
921 ceph_decode_32_safe(p, end, osd, bad); in osdmap_apply_incremental()
922 ceph_decode_copy_safe(p, end, &addr, sizeof(addr), bad); in osdmap_apply_incremental()
931 ceph_decode_32_safe(p, end, len, bad); in osdmap_apply_incremental()
935 ceph_decode_32_safe(p, end, osd, bad); in osdmap_apply_incremental()
936 xorstate = **(u8 **)p; in osdmap_apply_incremental()
937 (*p)++; /* clean flag */ in osdmap_apply_incremental()
947 ceph_decode_32_safe(p, end, len, bad); in osdmap_apply_incremental()
950 ceph_decode_need(p, end, sizeof(u32)*2, bad); in osdmap_apply_incremental()
951 osd = ceph_decode_32(p); in osdmap_apply_incremental()
952 off = ceph_decode_32(p); in osdmap_apply_incremental()
961 ceph_decode_32_safe(p, end, len, bad); in osdmap_apply_incremental()
968 err = ceph_decode_pgid(p, end, &pgid); in osdmap_apply_incremental()
971 ceph_decode_need(p, end, sizeof(u32), bad); in osdmap_apply_incremental()
972 pglen = ceph_decode_32(p); in osdmap_apply_incremental()
974 ceph_decode_need(p, end, pglen*sizeof(u32), bad); in osdmap_apply_incremental()
990 pg->osds[j] = ceph_decode_32(p); in osdmap_apply_incremental()
1005 *p = end; in osdmap_apply_incremental()
1010 epoch, (int)(*p - start), *p, start, end); in osdmap_apply_incremental()