Lines Matching full:call
15 * Deliver reply data to a VL.GetEntryByNameU call.
17 static int afs_deliver_vl_get_entry_by_name_u(struct afs_call *call) in afs_deliver_vl_get_entry_by_name_u() argument
26 ret = afs_transfer_reply(call); in afs_deliver_vl_get_entry_by_name_u()
31 uvldb = call->buffer; in afs_deliver_vl_get_entry_by_name_u()
32 entry = call->ret_vldb; in afs_deliver_vl_get_entry_by_name_u()
115 struct afs_call *call; in afs_vl_get_entry_by_name_u() local
129 call = afs_alloc_flat_call(net, &afs_RXVLGetEntryByNameU, reqsz, in afs_vl_get_entry_by_name_u()
131 if (!call) { in afs_vl_get_entry_by_name_u()
136 call->key = vc->key; in afs_vl_get_entry_by_name_u()
137 call->ret_vldb = entry; in afs_vl_get_entry_by_name_u()
138 call->max_lifespan = AFS_VL_MAX_LIFESPAN; in afs_vl_get_entry_by_name_u()
139 call->peer = rxrpc_kernel_get_peer(vc->alist->addrs[vc->addr_index].peer); in afs_vl_get_entry_by_name_u()
140 call->service_id = vc->server->service_id; in afs_vl_get_entry_by_name_u()
143 bp = call->request; in afs_vl_get_entry_by_name_u()
150 trace_afs_make_vl_call(call); in afs_vl_get_entry_by_name_u()
151 afs_make_call(call, GFP_KERNEL); in afs_vl_get_entry_by_name_u()
152 afs_wait_for_call_to_complete(call); in afs_vl_get_entry_by_name_u()
153 vc->call_abort_code = call->abort_code; in afs_vl_get_entry_by_name_u()
154 vc->call_error = call->error; in afs_vl_get_entry_by_name_u()
155 vc->call_responded = call->responded; in afs_vl_get_entry_by_name_u()
156 afs_put_call(call); in afs_vl_get_entry_by_name_u()
165 * Deliver reply data to a VL.GetAddrsU call.
173 static int afs_deliver_vl_get_addrs_u(struct afs_call *call) in afs_deliver_vl_get_addrs_u() argument
181 call->unmarshall, iov_iter_count(call->iter), call->count); in afs_deliver_vl_get_addrs_u()
183 switch (call->unmarshall) { in afs_deliver_vl_get_addrs_u()
185 afs_extract_to_buf(call, in afs_deliver_vl_get_addrs_u()
187 call->unmarshall++; in afs_deliver_vl_get_addrs_u()
193 ret = afs_extract_data(call, true); in afs_deliver_vl_get_addrs_u()
197 bp = call->buffer + sizeof(struct afs_uuid__xdr); in afs_deliver_vl_get_addrs_u()
207 call->ret_alist = alist; in afs_deliver_vl_get_addrs_u()
208 call->count = count; in afs_deliver_vl_get_addrs_u()
209 call->count2 = nentries; in afs_deliver_vl_get_addrs_u()
210 call->unmarshall++; in afs_deliver_vl_get_addrs_u()
213 count = min(call->count, 4U); in afs_deliver_vl_get_addrs_u()
214 afs_extract_to_buf(call, count * sizeof(__be32)); in afs_deliver_vl_get_addrs_u()
218 ret = afs_extract_data(call, call->count > 4); in afs_deliver_vl_get_addrs_u()
222 alist = call->ret_alist; in afs_deliver_vl_get_addrs_u()
223 bp = call->buffer; in afs_deliver_vl_get_addrs_u()
224 count = min(call->count, 4U); in afs_deliver_vl_get_addrs_u()
226 if (alist->nr_addrs < call->count2) { in afs_deliver_vl_get_addrs_u()
227 ret = afs_merge_fs_addr4(call->net, alist, *bp++, AFS_FS_PORT); in afs_deliver_vl_get_addrs_u()
233 call->count -= count; in afs_deliver_vl_get_addrs_u()
234 if (call->count > 0) in afs_deliver_vl_get_addrs_u()
236 call->unmarshall++; in afs_deliver_vl_get_addrs_u()
264 struct afs_call *call; in afs_vl_get_addrs_u() local
271 call = afs_alloc_flat_call(net, &afs_RXVLGetAddrsU, in afs_vl_get_addrs_u()
274 if (!call) in afs_vl_get_addrs_u()
277 call->key = vc->key; in afs_vl_get_addrs_u()
278 call->ret_alist = NULL; in afs_vl_get_addrs_u()
279 call->max_lifespan = AFS_VL_MAX_LIFESPAN; in afs_vl_get_addrs_u()
280 call->peer = rxrpc_kernel_get_peer(vc->alist->addrs[vc->addr_index].peer); in afs_vl_get_addrs_u()
281 call->service_id = vc->server->service_id; in afs_vl_get_addrs_u()
284 bp = call->request; in afs_vl_get_addrs_u()
299 trace_afs_make_vl_call(call); in afs_vl_get_addrs_u()
300 afs_make_call(call, GFP_KERNEL); in afs_vl_get_addrs_u()
301 afs_wait_for_call_to_complete(call); in afs_vl_get_addrs_u()
302 vc->call_abort_code = call->abort_code; in afs_vl_get_addrs_u()
303 vc->call_error = call->error; in afs_vl_get_addrs_u()
304 vc->call_responded = call->responded; in afs_vl_get_addrs_u()
305 alist = call->ret_alist; in afs_vl_get_addrs_u()
306 afs_put_call(call); in afs_vl_get_addrs_u()
317 static int afs_deliver_vl_get_capabilities(struct afs_call *call) in afs_deliver_vl_get_capabilities() argument
323 call->unmarshall, iov_iter_count(call->iter), call->count); in afs_deliver_vl_get_capabilities()
325 switch (call->unmarshall) { in afs_deliver_vl_get_capabilities()
327 afs_extract_to_tmp(call); in afs_deliver_vl_get_capabilities()
328 call->unmarshall++; in afs_deliver_vl_get_capabilities()
332 ret = afs_extract_data(call, true); in afs_deliver_vl_get_capabilities()
336 count = ntohl(call->tmp); in afs_deliver_vl_get_capabilities()
337 call->count = count; in afs_deliver_vl_get_capabilities()
338 call->count2 = count; in afs_deliver_vl_get_capabilities()
340 call->unmarshall++; in afs_deliver_vl_get_capabilities()
341 afs_extract_discard(call, count * sizeof(__be32)); in afs_deliver_vl_get_capabilities()
345 ret = afs_extract_data(call, false); in afs_deliver_vl_get_capabilities()
351 call->unmarshall++; in afs_deliver_vl_get_capabilities()
359 static void afs_destroy_vl_get_capabilities(struct afs_call *call) in afs_destroy_vl_get_capabilities() argument
361 afs_put_addrlist(call->vl_probe, afs_alist_trace_put_vlgetcaps); in afs_destroy_vl_get_capabilities()
362 afs_put_vlserver(call->net, call->vlserver); in afs_destroy_vl_get_capabilities()
363 afs_flat_call_destructor(call); in afs_destroy_vl_get_capabilities()
392 struct afs_call *call; in afs_vl_get_capabilities() local
397 call = afs_alloc_flat_call(net, &afs_RXVLGetCapabilities, 1 * 4, 16 * 4); in afs_vl_get_capabilities()
398 if (!call) in afs_vl_get_capabilities()
401 call->key = key; in afs_vl_get_capabilities()
402 call->vlserver = afs_get_vlserver(server); in afs_vl_get_capabilities()
403 call->server_index = server_index; in afs_vl_get_capabilities()
404 call->peer = rxrpc_kernel_get_peer(alist->addrs[addr_index].peer); in afs_vl_get_capabilities()
405 call->vl_probe = afs_get_addrlist(alist, afs_alist_trace_get_vlgetcaps); in afs_vl_get_capabilities()
406 call->probe_index = addr_index; in afs_vl_get_capabilities()
407 call->service_id = server->service_id; in afs_vl_get_capabilities()
408 call->upgrade = true; in afs_vl_get_capabilities()
409 call->async = true; in afs_vl_get_capabilities()
410 call->max_lifespan = AFS_PROBE_MAX_LIFESPAN; in afs_vl_get_capabilities()
413 bp = call->request; in afs_vl_get_capabilities()
417 trace_afs_make_vl_call(call); in afs_vl_get_capabilities()
418 afs_make_call(call, GFP_KERNEL); in afs_vl_get_capabilities()
419 return call; in afs_vl_get_capabilities()
423 * Deliver reply data to a YFSVL.GetEndpoints call.
431 static int afs_deliver_yfsvl_get_endpoints(struct afs_call *call) in afs_deliver_yfsvl_get_endpoints() argument
439 call->unmarshall, iov_iter_count(call->iter), call->count2); in afs_deliver_yfsvl_get_endpoints()
441 switch (call->unmarshall) { in afs_deliver_yfsvl_get_endpoints()
443 afs_extract_to_buf(call, sizeof(uuid_t) + 3 * sizeof(__be32)); in afs_deliver_yfsvl_get_endpoints()
444 call->unmarshall = 1; in afs_deliver_yfsvl_get_endpoints()
451 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_endpoints()
455 bp = call->buffer + sizeof(uuid_t); in afs_deliver_yfsvl_get_endpoints()
457 call->count = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
458 call->count2 = ntohl(*bp); /* Type or next count */ in afs_deliver_yfsvl_get_endpoints()
460 if (call->count > YFS_MAXENDPOINTS) in afs_deliver_yfsvl_get_endpoints()
461 return afs_protocol_error(call, afs_eproto_yvl_fsendpt_num); in afs_deliver_yfsvl_get_endpoints()
463 alist = afs_alloc_addrlist(call->count); in afs_deliver_yfsvl_get_endpoints()
467 call->ret_alist = alist; in afs_deliver_yfsvl_get_endpoints()
469 if (call->count == 0) in afs_deliver_yfsvl_get_endpoints()
473 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
481 return afs_protocol_error(call, afs_eproto_yvl_fsendpt_type); in afs_deliver_yfsvl_get_endpoints()
485 afs_extract_to_buf(call, size); in afs_deliver_yfsvl_get_endpoints()
486 call->unmarshall = 2; in afs_deliver_yfsvl_get_endpoints()
490 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_endpoints()
494 alist = call->ret_alist; in afs_deliver_yfsvl_get_endpoints()
495 bp = call->buffer; in afs_deliver_yfsvl_get_endpoints()
496 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
500 call, afs_eproto_yvl_fsendpt4_len); in afs_deliver_yfsvl_get_endpoints()
501 ret = afs_merge_fs_addr4(call->net, alist, bp[1], ntohl(bp[2])); in afs_deliver_yfsvl_get_endpoints()
509 call, afs_eproto_yvl_fsendpt6_len); in afs_deliver_yfsvl_get_endpoints()
510 ret = afs_merge_fs_addr6(call->net, alist, bp + 1, ntohl(bp[5])); in afs_deliver_yfsvl_get_endpoints()
516 return afs_protocol_error(call, afs_eproto_yvl_fsendpt_type); in afs_deliver_yfsvl_get_endpoints()
522 call->count2 = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
524 call->count--; in afs_deliver_yfsvl_get_endpoints()
525 if (call->count > 0) in afs_deliver_yfsvl_get_endpoints()
530 call->count = call->count2; in afs_deliver_yfsvl_get_endpoints()
531 if (!call->count) in afs_deliver_yfsvl_get_endpoints()
533 if (call->count > YFS_MAXENDPOINTS) in afs_deliver_yfsvl_get_endpoints()
534 return afs_protocol_error(call, afs_eproto_yvl_vlendpt_type); in afs_deliver_yfsvl_get_endpoints()
536 afs_extract_to_buf(call, 1 * sizeof(__be32)); in afs_deliver_yfsvl_get_endpoints()
537 call->unmarshall = 3; in afs_deliver_yfsvl_get_endpoints()
545 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_endpoints()
549 bp = call->buffer; in afs_deliver_yfsvl_get_endpoints()
552 call->count2 = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
553 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
561 return afs_protocol_error(call, afs_eproto_yvl_vlendpt_type); in afs_deliver_yfsvl_get_endpoints()
564 if (call->count > 1) in afs_deliver_yfsvl_get_endpoints()
566 afs_extract_to_buf(call, size); in afs_deliver_yfsvl_get_endpoints()
567 call->unmarshall = 4; in afs_deliver_yfsvl_get_endpoints()
571 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_endpoints()
575 bp = call->buffer; in afs_deliver_yfsvl_get_endpoints()
576 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
580 call, afs_eproto_yvl_vlendpt4_len); in afs_deliver_yfsvl_get_endpoints()
586 call, afs_eproto_yvl_vlendpt6_len); in afs_deliver_yfsvl_get_endpoints()
590 return afs_protocol_error(call, afs_eproto_yvl_vlendpt_type); in afs_deliver_yfsvl_get_endpoints()
596 call->count--; in afs_deliver_yfsvl_get_endpoints()
597 if (call->count > 0) in afs_deliver_yfsvl_get_endpoints()
601 afs_extract_discard(call, 0); in afs_deliver_yfsvl_get_endpoints()
602 call->unmarshall = 5; in afs_deliver_yfsvl_get_endpoints()
606 ret = afs_extract_data(call, false); in afs_deliver_yfsvl_get_endpoints()
609 call->unmarshall = 6; in afs_deliver_yfsvl_get_endpoints()
638 struct afs_call *call; in afs_yfsvl_get_endpoints() local
644 call = afs_alloc_flat_call(net, &afs_YFSVLGetEndpoints, in afs_yfsvl_get_endpoints()
647 if (!call) in afs_yfsvl_get_endpoints()
650 call->key = vc->key; in afs_yfsvl_get_endpoints()
651 call->ret_alist = NULL; in afs_yfsvl_get_endpoints()
652 call->max_lifespan = AFS_VL_MAX_LIFESPAN; in afs_yfsvl_get_endpoints()
653 call->peer = rxrpc_kernel_get_peer(vc->alist->addrs[vc->addr_index].peer); in afs_yfsvl_get_endpoints()
654 call->service_id = vc->server->service_id; in afs_yfsvl_get_endpoints()
657 bp = call->request; in afs_yfsvl_get_endpoints()
662 trace_afs_make_vl_call(call); in afs_yfsvl_get_endpoints()
663 afs_make_call(call, GFP_KERNEL); in afs_yfsvl_get_endpoints()
664 afs_wait_for_call_to_complete(call); in afs_yfsvl_get_endpoints()
665 vc->call_abort_code = call->abort_code; in afs_yfsvl_get_endpoints()
666 vc->call_error = call->error; in afs_yfsvl_get_endpoints()
667 vc->call_responded = call->responded; in afs_yfsvl_get_endpoints()
668 alist = call->ret_alist; in afs_yfsvl_get_endpoints()
669 afs_put_call(call); in afs_yfsvl_get_endpoints()
680 static int afs_deliver_yfsvl_get_cell_name(struct afs_call *call) in afs_deliver_yfsvl_get_cell_name() argument
687 call->unmarshall, iov_iter_count(call->iter), call->count); in afs_deliver_yfsvl_get_cell_name()
689 switch (call->unmarshall) { in afs_deliver_yfsvl_get_cell_name()
691 afs_extract_to_tmp(call); in afs_deliver_yfsvl_get_cell_name()
692 call->unmarshall++; in afs_deliver_yfsvl_get_cell_name()
696 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_cell_name()
700 namesz = ntohl(call->tmp); in afs_deliver_yfsvl_get_cell_name()
702 return afs_protocol_error(call, afs_eproto_cellname_len); in afs_deliver_yfsvl_get_cell_name()
704 call->count = namesz; in afs_deliver_yfsvl_get_cell_name()
705 call->count2 = paddedsz - namesz; in afs_deliver_yfsvl_get_cell_name()
711 call->ret_str = cell_name; in afs_deliver_yfsvl_get_cell_name()
713 afs_extract_begin(call, cell_name, namesz); in afs_deliver_yfsvl_get_cell_name()
714 call->unmarshall++; in afs_deliver_yfsvl_get_cell_name()
718 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_cell_name()
722 afs_extract_discard(call, call->count2); in afs_deliver_yfsvl_get_cell_name()
723 call->unmarshall++; in afs_deliver_yfsvl_get_cell_name()
727 ret = afs_extract_data(call, false); in afs_deliver_yfsvl_get_cell_name()
731 call->unmarshall++; in afs_deliver_yfsvl_get_cell_name()
758 struct afs_call *call; in afs_yfsvl_get_cell_name() local
765 call = afs_alloc_flat_call(net, &afs_YFSVLGetCellName, 1 * 4, 0); in afs_yfsvl_get_cell_name()
766 if (!call) in afs_yfsvl_get_cell_name()
769 call->key = vc->key; in afs_yfsvl_get_cell_name()
770 call->ret_str = NULL; in afs_yfsvl_get_cell_name()
771 call->max_lifespan = AFS_VL_MAX_LIFESPAN; in afs_yfsvl_get_cell_name()
772 call->peer = rxrpc_kernel_get_peer(vc->alist->addrs[vc->addr_index].peer); in afs_yfsvl_get_cell_name()
773 call->service_id = vc->server->service_id; in afs_yfsvl_get_cell_name()
776 bp = call->request; in afs_yfsvl_get_cell_name()
780 trace_afs_make_vl_call(call); in afs_yfsvl_get_cell_name()
781 afs_make_call(call, GFP_KERNEL); in afs_yfsvl_get_cell_name()
782 afs_wait_for_call_to_complete(call); in afs_yfsvl_get_cell_name()
783 vc->call_abort_code = call->abort_code; in afs_yfsvl_get_cell_name()
784 vc->call_error = call->error; in afs_yfsvl_get_cell_name()
785 vc->call_responded = call->responded; in afs_yfsvl_get_cell_name()
786 cellname = call->ret_str; in afs_yfsvl_get_cell_name()
787 afs_put_call(call); in afs_yfsvl_get_cell_name()