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_8_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 crush_decode_straw2_bucket(void **p, void *end, in crush_decode_straw2_bucket() argument
129 dout("crush_decode_straw2_bucket %p to %p\n", *p, end); in crush_decode_straw2_bucket()
133 ceph_decode_need(p, end, b->h.size * sizeof(u32), bad); in crush_decode_straw2_bucket()
135 b->item_weights[j] = ceph_decode_32(p); in crush_decode_straw2_bucket()
141 static int skip_name_map(void **p, void *end) in skip_name_map() argument
144 ceph_decode_32_safe(p, end, len ,bad); in skip_name_map()
147 *p += sizeof(u32); in skip_name_map()
148 ceph_decode_32_safe(p, end, strlen, bad); in skip_name_map()
149 *p += strlen; in skip_name_map()
161 void **p = &pbyval; in crush_decode() local
166 dout("crush_decode %p to %p len %d\n", *p, end, (int)(end - *p)); in crush_decode()
178 ceph_decode_need(p, end, 4*sizeof(u32), bad); in crush_decode()
179 magic = ceph_decode_32(p); in crush_decode()
185 c->max_buckets = ceph_decode_32(p); in crush_decode()
186 c->max_rules = ceph_decode_32(p); in crush_decode()
187 c->max_devices = ceph_decode_32(p); in crush_decode()
202 ceph_decode_32_safe(p, end, alg, bad); in crush_decode()
208 i, (int)(*p-start), *p, end); in crush_decode()
235 ceph_decode_need(p, end, 4*sizeof(u32), bad); in crush_decode()
236 b->id = ceph_decode_32(p); in crush_decode()
237 b->type = ceph_decode_16(p); in crush_decode()
238 b->alg = ceph_decode_8(p); in crush_decode()
239 b->hash = ceph_decode_8(p); in crush_decode()
240 b->weight = ceph_decode_32(p); in crush_decode()
241 b->size = ceph_decode_32(p); in crush_decode()
244 b->size, (int)(*p-start), *p, end); in crush_decode()
254 ceph_decode_need(p, end, b->size*sizeof(u32), bad); in crush_decode()
256 b->items[j] = ceph_decode_32(p); in crush_decode()
260 err = crush_decode_uniform_bucket(p, end, in crush_decode()
266 err = crush_decode_list_bucket(p, end, in crush_decode()
272 err = crush_decode_tree_bucket(p, end, in crush_decode()
278 err = crush_decode_straw_bucket(p, end, in crush_decode()
284 err = crush_decode_straw2_bucket(p, end, in crush_decode()
299 ceph_decode_32_safe(p, end, yes, bad); in crush_decode()
302 i, (int)(*p-start), *p, end); in crush_decode()
308 i, (int)(*p-start), *p, end); in crush_decode()
311 ceph_decode_32_safe(p, end, yes, bad); in crush_decode()
325 ceph_decode_copy_safe(p, end, &r->mask, 4, bad); /* 4 u8's */ in crush_decode()
326 ceph_decode_need(p, end, r->len*3*sizeof(u32), bad); in crush_decode()
328 r->steps[j].op = ceph_decode_32(p); in crush_decode()
329 r->steps[j].arg1 = ceph_decode_32(p); in crush_decode()
330 r->steps[j].arg2 = ceph_decode_32(p); in crush_decode()
336 err = skip_name_map(p, end); in crush_decode()
342 ceph_decode_need(p, end, 3*sizeof(u32), done); in crush_decode()
343 c->choose_local_tries = ceph_decode_32(p); in crush_decode()
344 c->choose_local_fallback_tries = ceph_decode_32(p); in crush_decode()
345 c->choose_total_tries = ceph_decode_32(p); in crush_decode()
353 ceph_decode_need(p, end, sizeof(u32), done); in crush_decode()
354 c->chooseleaf_descend_once = ceph_decode_32(p); in crush_decode()
358 ceph_decode_need(p, end, sizeof(u8), done); in crush_decode()
359 c->chooseleaf_vary_r = ceph_decode_8(p); in crush_decode()
395 struct rb_node **p = &root->rb_node; in __insert_pg_mapping() local
401 while (*p) { in __insert_pg_mapping()
402 parent = *p; in __insert_pg_mapping()
406 p = &(*p)->rb_left; in __insert_pg_mapping()
408 p = &(*p)->rb_right; in __insert_pg_mapping()
413 rb_link_node(&new->node, parent, p); in __insert_pg_mapping()
461 struct rb_node **p = &root->rb_node; in __insert_pg_pool() local
465 while (*p) { in __insert_pg_pool()
466 parent = *p; in __insert_pg_pool()
469 p = &(*p)->rb_left; in __insert_pg_pool()
471 p = &(*p)->rb_right; in __insert_pg_pool()
476 rb_link_node(&new->node, parent, p); in __insert_pg_pool()
540 static int decode_pool(void **p, void *end, struct ceph_pg_pool_info *pi) in decode_pool() argument
546 ceph_decode_need(p, end, 2 + 4, bad); in decode_pool()
547 ev = ceph_decode_8(p); /* encoding version */ in decode_pool()
548 cv = ceph_decode_8(p); /* compat version */ in decode_pool()
557 len = ceph_decode_32(p); in decode_pool()
558 ceph_decode_need(p, end, len, bad); in decode_pool()
559 pool_end = *p + len; in decode_pool()
561 pi->type = ceph_decode_8(p); in decode_pool()
562 pi->size = ceph_decode_8(p); in decode_pool()
563 pi->crush_ruleset = ceph_decode_8(p); in decode_pool()
564 pi->object_hash = ceph_decode_8(p); in decode_pool()
566 pi->pg_num = ceph_decode_32(p); in decode_pool()
567 pi->pgp_num = ceph_decode_32(p); in decode_pool()
569 *p += 4 + 4; /* skip lpg* */ in decode_pool()
570 *p += 4; /* skip last_change */ in decode_pool()
571 *p += 8 + 4; /* skip snap_seq, snap_epoch */ in decode_pool()
574 num = ceph_decode_32(p); in decode_pool()
576 *p += 8; /* snapid key */ in decode_pool()
577 *p += 1 + 1; /* versions */ in decode_pool()
578 len = ceph_decode_32(p); in decode_pool()
579 *p += len; in decode_pool()
583 num = ceph_decode_32(p); in decode_pool()
584 *p += num * (8 + 8); in decode_pool()
586 *p += 8; /* skip auid */ in decode_pool()
587 pi->flags = ceph_decode_64(p); in decode_pool()
588 *p += 4; /* skip crash_replay_interval */ in decode_pool()
591 *p += 1; /* skip min_size */ in decode_pool()
594 *p += 8 + 8; /* skip quota_max_* */ in decode_pool()
598 num = ceph_decode_32(p); in decode_pool()
599 *p += num * 8; in decode_pool()
601 *p += 8; /* skip tier_of */ in decode_pool()
602 *p += 1; /* skip cache_mode */ in decode_pool()
604 pi->read_tier = ceph_decode_64(p); in decode_pool()
605 pi->write_tier = ceph_decode_64(p); in decode_pool()
613 *p = pool_end; in decode_pool()
621 static int decode_pool_names(void **p, void *end, struct ceph_osdmap *map) in decode_pool_names() argument
627 ceph_decode_32_safe(p, end, num, bad); in decode_pool_names()
630 ceph_decode_64_safe(p, end, pool, bad); in decode_pool_names()
631 ceph_decode_32_safe(p, end, len, bad); in decode_pool_names()
633 ceph_decode_need(p, end, len, bad); in decode_pool_names()
636 char *name = kstrndup(*p, len, GFP_NOFS); in decode_pool_names()
644 *p += len; in decode_pool_names()
747 static int get_osdmap_client_data_v(void **p, void *end, in get_osdmap_client_data_v() argument
752 ceph_decode_8_safe(p, end, struct_v, e_inval); in get_osdmap_client_data_v()
756 ceph_decode_8_safe(p, end, struct_compat, e_inval); in get_osdmap_client_data_v()
763 *p += 4; /* ignore wrapper struct_len */ in get_osdmap_client_data_v()
765 ceph_decode_8_safe(p, end, struct_v, e_inval); in get_osdmap_client_data_v()
766 ceph_decode_8_safe(p, end, struct_compat, e_inval); in get_osdmap_client_data_v()
773 *p += 4; /* ignore client data struct_len */ in get_osdmap_client_data_v()
777 *p -= 1; in get_osdmap_client_data_v()
778 ceph_decode_16_safe(p, end, version, e_inval); in get_osdmap_client_data_v()
796 static int __decode_pools(void **p, void *end, struct ceph_osdmap *map, in __decode_pools() argument
801 ceph_decode_32_safe(p, end, n, e_inval); in __decode_pools()
807 ceph_decode_64_safe(p, end, pool, e_inval); in __decode_pools()
824 ret = decode_pool(p, end, pi); in __decode_pools()
835 static int decode_pools(void **p, void *end, struct ceph_osdmap *map) in decode_pools() argument
837 return __decode_pools(p, end, map, false); in decode_pools()
840 static int decode_new_pools(void **p, void *end, struct ceph_osdmap *map) in decode_new_pools() argument
842 return __decode_pools(p, end, map, true); in decode_new_pools()
845 static int __decode_pg_temp(void **p, void *end, struct ceph_osdmap *map, in __decode_pg_temp() argument
850 ceph_decode_32_safe(p, end, n, e_inval); in __decode_pg_temp()
856 ret = ceph_decode_pgid(p, end, &pgid); in __decode_pg_temp()
860 ceph_decode_32_safe(p, end, len, e_inval); in __decode_pg_temp()
868 ceph_decode_need(p, end, len*sizeof(u32), e_inval); in __decode_pg_temp()
880 pg->pg_temp.osds[i] = ceph_decode_32(p); in __decode_pg_temp()
896 static int decode_pg_temp(void **p, void *end, struct ceph_osdmap *map) in decode_pg_temp() argument
898 return __decode_pg_temp(p, end, map, false); in decode_pg_temp()
901 static int decode_new_pg_temp(void **p, void *end, struct ceph_osdmap *map) in decode_new_pg_temp() argument
903 return __decode_pg_temp(p, end, map, true); in decode_new_pg_temp()
906 static int __decode_primary_temp(void **p, void *end, struct ceph_osdmap *map, in __decode_primary_temp() argument
911 ceph_decode_32_safe(p, end, n, e_inval); in __decode_primary_temp()
917 ret = ceph_decode_pgid(p, end, &pgid); in __decode_primary_temp()
921 ceph_decode_32_safe(p, end, osd, e_inval); in __decode_primary_temp()
950 static int decode_primary_temp(void **p, void *end, struct ceph_osdmap *map) in decode_primary_temp() argument
952 return __decode_primary_temp(p, end, map, false); in decode_primary_temp()
955 static int decode_new_primary_temp(void **p, void *end, in decode_new_primary_temp() argument
958 return __decode_primary_temp(p, end, map, true); in decode_new_primary_temp()
993 static int decode_primary_affinity(void **p, void *end, in decode_primary_affinity() argument
998 ceph_decode_32_safe(p, end, len, e_inval); in decode_primary_affinity()
1007 ceph_decode_need(p, end, map->max_osd*sizeof(u32), e_inval); in decode_primary_affinity()
1012 ret = set_primary_affinity(map, i, ceph_decode_32(p)); in decode_primary_affinity()
1023 static int decode_new_primary_affinity(void **p, void *end, in decode_new_primary_affinity() argument
1028 ceph_decode_32_safe(p, end, n, e_inval); in decode_new_primary_affinity()
1033 ceph_decode_32_safe(p, end, osd, e_inval); in decode_new_primary_affinity()
1034 ceph_decode_32_safe(p, end, aff, e_inval); in decode_new_primary_affinity()
1052 static int osdmap_decode(void **p, void *end, struct ceph_osdmap *map) in osdmap_decode() argument
1056 void *start = *p; in osdmap_decode()
1061 dout("%s %p to %p len %d\n", __func__, *p, end, (int)(end - *p)); in osdmap_decode()
1063 err = get_osdmap_client_data_v(p, end, "full", &struct_v); in osdmap_decode()
1068 ceph_decode_need(p, end, sizeof(map->fsid) + sizeof(u32) + in osdmap_decode()
1070 ceph_decode_copy(p, &map->fsid, sizeof(map->fsid)); in osdmap_decode()
1071 epoch = map->epoch = ceph_decode_32(p); in osdmap_decode()
1072 ceph_decode_copy(p, &map->created, sizeof(map->created)); in osdmap_decode()
1073 ceph_decode_copy(p, &map->modified, sizeof(map->modified)); in osdmap_decode()
1076 err = decode_pools(p, end, map); in osdmap_decode()
1081 err = decode_pool_names(p, end, map); in osdmap_decode()
1085 ceph_decode_32_safe(p, end, map->pool_max, e_inval); in osdmap_decode()
1087 ceph_decode_32_safe(p, end, map->flags, e_inval); in osdmap_decode()
1090 ceph_decode_32_safe(p, end, max, e_inval); in osdmap_decode()
1098 ceph_decode_need(p, end, 3*sizeof(u32) + in osdmap_decode()
1102 if (ceph_decode_32(p) != map->max_osd) in osdmap_decode()
1105 ceph_decode_copy(p, map->osd_state, map->max_osd); in osdmap_decode()
1107 if (ceph_decode_32(p) != map->max_osd) in osdmap_decode()
1111 map->osd_weight[i] = ceph_decode_32(p); in osdmap_decode()
1113 if (ceph_decode_32(p) != map->max_osd) in osdmap_decode()
1116 ceph_decode_copy(p, map->osd_addr, map->max_osd*sizeof(*map->osd_addr)); in osdmap_decode()
1121 err = decode_pg_temp(p, end, map); in osdmap_decode()
1127 err = decode_primary_temp(p, end, map); in osdmap_decode()
1134 err = decode_primary_affinity(p, end, map); in osdmap_decode()
1144 ceph_decode_32_safe(p, end, len, e_inval); in osdmap_decode()
1145 map->crush = crush_decode(*p, min(*p + len, end)); in osdmap_decode()
1151 *p += len; in osdmap_decode()
1154 *p = end; in osdmap_decode()
1163 err, epoch, (int)(*p - start), *p, start, end); in osdmap_decode()
1173 struct ceph_osdmap *ceph_osdmap_decode(void **p, void *end) in ceph_osdmap_decode() argument
1186 ret = osdmap_decode(p, end, map); in ceph_osdmap_decode()
1203 static int decode_new_up_state_weight(void **p, void *end, in decode_new_up_state_weight() argument
1211 new_up_client = *p; in decode_new_up_state_weight()
1212 ceph_decode_32_safe(p, end, len, e_inval); in decode_new_up_state_weight()
1214 ceph_decode_need(p, end, len, e_inval); in decode_new_up_state_weight()
1215 *p += len; in decode_new_up_state_weight()
1217 new_state = *p; in decode_new_up_state_weight()
1218 ceph_decode_32_safe(p, end, len, e_inval); in decode_new_up_state_weight()
1220 ceph_decode_need(p, end, len, e_inval); in decode_new_up_state_weight()
1221 *p += len; in decode_new_up_state_weight()
1224 ceph_decode_32_safe(p, end, len, e_inval); in decode_new_up_state_weight()
1229 ceph_decode_need(p, end, 2*sizeof(u32), e_inval); in decode_new_up_state_weight()
1230 osd = ceph_decode_32(p); in decode_new_up_state_weight()
1231 w = ceph_decode_32(p); in decode_new_up_state_weight()
1248 new_weight_end = *p; in decode_new_up_state_weight()
1251 *p = new_state; in decode_new_up_state_weight()
1252 len = ceph_decode_32(p); in decode_new_up_state_weight()
1258 osd = ceph_decode_32(p); in decode_new_up_state_weight()
1259 xorstate = ceph_decode_8(p); in decode_new_up_state_weight()
1281 *p = new_up_client; in decode_new_up_state_weight()
1282 len = ceph_decode_32(p); in decode_new_up_state_weight()
1287 osd = ceph_decode_32(p); in decode_new_up_state_weight()
1288 ceph_decode_copy(p, &addr, sizeof(addr)); in decode_new_up_state_weight()
1296 *p = new_weight_end; in decode_new_up_state_weight()
1306 struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, in osdmap_apply_incremental() argument
1318 void *start = *p; in osdmap_apply_incremental()
1322 dout("%s %p to %p len %d\n", __func__, *p, end, (int)(end - *p)); in osdmap_apply_incremental()
1324 err = get_osdmap_client_data_v(p, end, "inc", &struct_v); in osdmap_apply_incremental()
1329 ceph_decode_need(p, end, sizeof(fsid) + sizeof(u32) + sizeof(modified) + in osdmap_apply_incremental()
1331 ceph_decode_copy(p, &fsid, sizeof(fsid)); in osdmap_apply_incremental()
1332 epoch = ceph_decode_32(p); in osdmap_apply_incremental()
1334 ceph_decode_copy(p, &modified, sizeof(modified)); in osdmap_apply_incremental()
1335 new_pool_max = ceph_decode_64(p); in osdmap_apply_incremental()
1336 new_flags = ceph_decode_32(p); in osdmap_apply_incremental()
1339 ceph_decode_32_safe(p, end, len, e_inval); in osdmap_apply_incremental()
1342 len, *p, end); in osdmap_apply_incremental()
1343 return ceph_osdmap_decode(p, min(*p+len, end)); in osdmap_apply_incremental()
1347 ceph_decode_32_safe(p, end, len, e_inval); in osdmap_apply_incremental()
1349 newcrush = crush_decode(*p, min(*p+len, end)); in osdmap_apply_incremental()
1355 *p += len; in osdmap_apply_incremental()
1365 ceph_decode_32_safe(p, end, max, e_inval); in osdmap_apply_incremental()
1382 err = decode_new_pools(p, end, map); in osdmap_apply_incremental()
1387 err = decode_pool_names(p, end, map); in osdmap_apply_incremental()
1392 ceph_decode_32_safe(p, end, len, e_inval); in osdmap_apply_incremental()
1396 ceph_decode_64_safe(p, end, pool, e_inval); in osdmap_apply_incremental()
1403 err = decode_new_up_state_weight(p, end, map); in osdmap_apply_incremental()
1408 err = decode_new_pg_temp(p, end, map); in osdmap_apply_incremental()
1414 err = decode_new_primary_temp(p, end, map); in osdmap_apply_incremental()
1421 err = decode_new_primary_affinity(p, end, map); in osdmap_apply_incremental()
1427 *p = end; in osdmap_apply_incremental()
1436 err, epoch, (int)(*p - start), *p, start, end); in osdmap_apply_incremental()