Lines Matching refs: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()
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()
391 struct afs_call *call; in afs_vl_get_capabilities() local
396 call = afs_alloc_flat_call(net, &afs_RXVLGetCapabilities, 1 * 4, 16 * 4); in afs_vl_get_capabilities()
397 if (!call) in afs_vl_get_capabilities()
400 call->key = key; in afs_vl_get_capabilities()
401 call->vlserver = afs_get_vlserver(server); in afs_vl_get_capabilities()
402 call->server_index = server_index; in afs_vl_get_capabilities()
403 call->peer = rxrpc_kernel_get_peer(alist->addrs[addr_index].peer); in afs_vl_get_capabilities()
404 call->vl_probe = afs_get_addrlist(alist, afs_alist_trace_get_vlgetcaps); in afs_vl_get_capabilities()
405 call->probe_index = addr_index; in afs_vl_get_capabilities()
406 call->service_id = server->service_id; in afs_vl_get_capabilities()
407 call->upgrade = true; in afs_vl_get_capabilities()
408 call->async = true; in afs_vl_get_capabilities()
409 call->max_lifespan = AFS_PROBE_MAX_LIFESPAN; in afs_vl_get_capabilities()
412 bp = call->request; in afs_vl_get_capabilities()
416 trace_afs_make_vl_call(call); in afs_vl_get_capabilities()
417 afs_make_call(call, GFP_KERNEL); in afs_vl_get_capabilities()
418 return call; in afs_vl_get_capabilities()
430 static int afs_deliver_yfsvl_get_endpoints(struct afs_call *call) in afs_deliver_yfsvl_get_endpoints() argument
438 call->unmarshall, iov_iter_count(call->iter), call->count2); in afs_deliver_yfsvl_get_endpoints()
440 switch (call->unmarshall) { in afs_deliver_yfsvl_get_endpoints()
442 afs_extract_to_buf(call, sizeof(uuid_t) + 3 * sizeof(__be32)); in afs_deliver_yfsvl_get_endpoints()
443 call->unmarshall = 1; in afs_deliver_yfsvl_get_endpoints()
450 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_endpoints()
454 bp = call->buffer + sizeof(uuid_t); in afs_deliver_yfsvl_get_endpoints()
456 call->count = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
457 call->count2 = ntohl(*bp); /* Type or next count */ in afs_deliver_yfsvl_get_endpoints()
459 if (call->count > YFS_MAXENDPOINTS) in afs_deliver_yfsvl_get_endpoints()
460 return afs_protocol_error(call, afs_eproto_yvl_fsendpt_num); in afs_deliver_yfsvl_get_endpoints()
462 alist = afs_alloc_addrlist(call->count); in afs_deliver_yfsvl_get_endpoints()
466 call->ret_alist = alist; in afs_deliver_yfsvl_get_endpoints()
468 if (call->count == 0) in afs_deliver_yfsvl_get_endpoints()
472 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
480 return afs_protocol_error(call, afs_eproto_yvl_fsendpt_type); in afs_deliver_yfsvl_get_endpoints()
484 afs_extract_to_buf(call, size); in afs_deliver_yfsvl_get_endpoints()
485 call->unmarshall = 2; in afs_deliver_yfsvl_get_endpoints()
489 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_endpoints()
493 alist = call->ret_alist; in afs_deliver_yfsvl_get_endpoints()
494 bp = call->buffer; in afs_deliver_yfsvl_get_endpoints()
495 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
499 call, afs_eproto_yvl_fsendpt4_len); in afs_deliver_yfsvl_get_endpoints()
500 ret = afs_merge_fs_addr4(call->net, alist, bp[1], ntohl(bp[2])); in afs_deliver_yfsvl_get_endpoints()
508 call, afs_eproto_yvl_fsendpt6_len); in afs_deliver_yfsvl_get_endpoints()
509 ret = afs_merge_fs_addr6(call->net, alist, bp + 1, ntohl(bp[5])); in afs_deliver_yfsvl_get_endpoints()
515 return afs_protocol_error(call, afs_eproto_yvl_fsendpt_type); in afs_deliver_yfsvl_get_endpoints()
521 call->count2 = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
523 call->count--; in afs_deliver_yfsvl_get_endpoints()
524 if (call->count > 0) in afs_deliver_yfsvl_get_endpoints()
529 call->count = call->count2; in afs_deliver_yfsvl_get_endpoints()
530 if (!call->count) in afs_deliver_yfsvl_get_endpoints()
532 if (call->count > YFS_MAXENDPOINTS) in afs_deliver_yfsvl_get_endpoints()
533 return afs_protocol_error(call, afs_eproto_yvl_vlendpt_type); in afs_deliver_yfsvl_get_endpoints()
535 afs_extract_to_buf(call, 1 * sizeof(__be32)); in afs_deliver_yfsvl_get_endpoints()
536 call->unmarshall = 3; in afs_deliver_yfsvl_get_endpoints()
544 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_endpoints()
548 bp = call->buffer; in afs_deliver_yfsvl_get_endpoints()
551 call->count2 = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
552 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
560 return afs_protocol_error(call, afs_eproto_yvl_vlendpt_type); in afs_deliver_yfsvl_get_endpoints()
563 if (call->count > 1) in afs_deliver_yfsvl_get_endpoints()
565 afs_extract_to_buf(call, size); in afs_deliver_yfsvl_get_endpoints()
566 call->unmarshall = 4; in afs_deliver_yfsvl_get_endpoints()
570 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_endpoints()
574 bp = call->buffer; in afs_deliver_yfsvl_get_endpoints()
575 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
579 call, afs_eproto_yvl_vlendpt4_len); in afs_deliver_yfsvl_get_endpoints()
585 call, afs_eproto_yvl_vlendpt6_len); in afs_deliver_yfsvl_get_endpoints()
589 return afs_protocol_error(call, afs_eproto_yvl_vlendpt_type); in afs_deliver_yfsvl_get_endpoints()
595 call->count--; in afs_deliver_yfsvl_get_endpoints()
596 if (call->count > 0) in afs_deliver_yfsvl_get_endpoints()
600 afs_extract_discard(call, 0); in afs_deliver_yfsvl_get_endpoints()
601 call->unmarshall = 5; in afs_deliver_yfsvl_get_endpoints()
605 ret = afs_extract_data(call, false); in afs_deliver_yfsvl_get_endpoints()
608 call->unmarshall = 6; in afs_deliver_yfsvl_get_endpoints()
637 struct afs_call *call; in afs_yfsvl_get_endpoints() local
643 call = afs_alloc_flat_call(net, &afs_YFSVLGetEndpoints, in afs_yfsvl_get_endpoints()
646 if (!call) in afs_yfsvl_get_endpoints()
649 call->key = vc->key; in afs_yfsvl_get_endpoints()
650 call->ret_alist = NULL; in afs_yfsvl_get_endpoints()
651 call->max_lifespan = AFS_VL_MAX_LIFESPAN; in afs_yfsvl_get_endpoints()
652 call->peer = rxrpc_kernel_get_peer(vc->alist->addrs[vc->addr_index].peer); in afs_yfsvl_get_endpoints()
653 call->service_id = vc->server->service_id; in afs_yfsvl_get_endpoints()
656 bp = call->request; in afs_yfsvl_get_endpoints()
661 trace_afs_make_vl_call(call); in afs_yfsvl_get_endpoints()
662 afs_make_call(call, GFP_KERNEL); in afs_yfsvl_get_endpoints()
663 afs_wait_for_call_to_complete(call); in afs_yfsvl_get_endpoints()
664 vc->call_abort_code = call->abort_code; in afs_yfsvl_get_endpoints()
665 vc->call_error = call->error; in afs_yfsvl_get_endpoints()
666 vc->call_responded = call->responded; in afs_yfsvl_get_endpoints()
667 alist = call->ret_alist; in afs_yfsvl_get_endpoints()
668 afs_put_call(call); in afs_yfsvl_get_endpoints()
679 static int afs_deliver_yfsvl_get_cell_name(struct afs_call *call) in afs_deliver_yfsvl_get_cell_name() argument
686 call->unmarshall, iov_iter_count(call->iter), call->count); in afs_deliver_yfsvl_get_cell_name()
688 switch (call->unmarshall) { in afs_deliver_yfsvl_get_cell_name()
690 afs_extract_to_tmp(call); in afs_deliver_yfsvl_get_cell_name()
691 call->unmarshall++; in afs_deliver_yfsvl_get_cell_name()
695 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_cell_name()
699 namesz = ntohl(call->tmp); in afs_deliver_yfsvl_get_cell_name()
701 return afs_protocol_error(call, afs_eproto_cellname_len); in afs_deliver_yfsvl_get_cell_name()
703 call->count = namesz; in afs_deliver_yfsvl_get_cell_name()
704 call->count2 = paddedsz - namesz; in afs_deliver_yfsvl_get_cell_name()
710 call->ret_str = cell_name; in afs_deliver_yfsvl_get_cell_name()
712 afs_extract_begin(call, cell_name, namesz); in afs_deliver_yfsvl_get_cell_name()
713 call->unmarshall++; in afs_deliver_yfsvl_get_cell_name()
717 ret = afs_extract_data(call, true); in afs_deliver_yfsvl_get_cell_name()
721 afs_extract_discard(call, call->count2); in afs_deliver_yfsvl_get_cell_name()
722 call->unmarshall++; in afs_deliver_yfsvl_get_cell_name()
726 ret = afs_extract_data(call, false); in afs_deliver_yfsvl_get_cell_name()
730 call->unmarshall++; in afs_deliver_yfsvl_get_cell_name()
757 struct afs_call *call; in afs_yfsvl_get_cell_name() local
764 call = afs_alloc_flat_call(net, &afs_YFSVLGetCellName, 1 * 4, 0); in afs_yfsvl_get_cell_name()
765 if (!call) in afs_yfsvl_get_cell_name()
768 call->key = vc->key; in afs_yfsvl_get_cell_name()
769 call->ret_str = NULL; in afs_yfsvl_get_cell_name()
770 call->max_lifespan = AFS_VL_MAX_LIFESPAN; in afs_yfsvl_get_cell_name()
771 call->peer = rxrpc_kernel_get_peer(vc->alist->addrs[vc->addr_index].peer); in afs_yfsvl_get_cell_name()
772 call->service_id = vc->server->service_id; in afs_yfsvl_get_cell_name()
775 bp = call->request; in afs_yfsvl_get_cell_name()
779 trace_afs_make_vl_call(call); in afs_yfsvl_get_cell_name()
780 afs_make_call(call, GFP_KERNEL); in afs_yfsvl_get_cell_name()
781 afs_wait_for_call_to_complete(call); in afs_yfsvl_get_cell_name()
782 vc->call_abort_code = call->abort_code; in afs_yfsvl_get_cell_name()
783 vc->call_error = call->error; in afs_yfsvl_get_cell_name()
784 vc->call_responded = call->responded; in afs_yfsvl_get_cell_name()
785 cellname = call->ret_str; in afs_yfsvl_get_cell_name()
786 afs_put_call(call); in afs_yfsvl_get_cell_name()