Lines Matching refs: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)
27 ret = afs_transfer_reply(call);
32 uvldb = call->buffer;
33 entry = call->ret_vldb;
109 static void afs_destroy_vl_get_entry_by_name_u(struct afs_call *call)
111 kfree(call->ret_vldb);
112 afs_flat_call_destructor(call);
134 struct afs_call *call;
148 call = afs_alloc_flat_call(net, &afs_RXVLGetEntryByNameU, reqsz,
150 if (!call) {
155 call->key = vc->key;
156 call->ret_vldb = entry;
157 call->max_lifespan = AFS_VL_MAX_LIFESPAN;
160 bp = call->request;
167 trace_afs_make_vl_call(call);
168 afs_make_call(&vc->ac, call, GFP_KERNEL);
169 return (struct afs_vldb_entry *)afs_wait_for_call_to_complete(call, &vc->ac);
173 * Deliver reply data to a VL.GetAddrsU call.
181 static int afs_deliver_vl_get_addrs_u(struct afs_call *call)
189 call->unmarshall, iov_iter_count(call->iter), call->count);
191 switch (call->unmarshall) {
193 afs_extract_to_buf(call,
195 call->unmarshall++;
201 ret = afs_extract_data(call, true);
205 bp = call->buffer + sizeof(struct afs_uuid__xdr);
215 call->ret_alist = alist;
216 call->count = count;
217 call->count2 = nentries;
218 call->unmarshall++;
221 count = min(call->count, 4U);
222 afs_extract_to_buf(call, count * sizeof(__be32));
226 ret = afs_extract_data(call, call->count > 4);
230 alist = call->ret_alist;
231 bp = call->buffer;
232 count = min(call->count, 4U);
234 if (alist->nr_addrs < call->count2)
237 call->count -= count;
238 if (call->count > 0)
240 call->unmarshall++;
248 static void afs_vl_get_addrs_u_destructor(struct afs_call *call)
250 afs_put_addrlist(call->ret_alist);
251 return afs_flat_call_destructor(call);
273 struct afs_call *call;
280 call = afs_alloc_flat_call(net, &afs_RXVLGetAddrsU,
283 if (!call)
286 call->key = vc->key;
287 call->ret_alist = NULL;
288 call->max_lifespan = AFS_VL_MAX_LIFESPAN;
291 bp = call->request;
306 trace_afs_make_vl_call(call);
307 afs_make_call(&vc->ac, call, GFP_KERNEL);
308 return (struct afs_addr_list *)afs_wait_for_call_to_complete(call, &vc->ac);
314 static int afs_deliver_vl_get_capabilities(struct afs_call *call)
320 call->unmarshall, iov_iter_count(call->iter), call->count);
322 switch (call->unmarshall) {
324 afs_extract_to_tmp(call);
325 call->unmarshall++;
329 ret = afs_extract_data(call, true);
333 count = ntohl(call->tmp);
334 call->count = count;
335 call->count2 = count;
337 call->unmarshall++;
338 afs_extract_discard(call, count * sizeof(__be32));
342 ret = afs_extract_data(call, false);
348 call->unmarshall++;
356 static void afs_destroy_vl_get_capabilities(struct afs_call *call)
358 afs_put_vlserver(call->net, call->vlserver);
359 afs_flat_call_destructor(call);
386 struct afs_call *call;
391 call = afs_alloc_flat_call(net, &afs_RXVLGetCapabilities, 1 * 4, 16 * 4);
392 if (!call)
395 call->key = key;
396 call->vlserver = afs_get_vlserver(server);
397 call->server_index = server_index;
398 call->upgrade = true;
399 call->async = true;
400 call->max_lifespan = AFS_PROBE_MAX_LIFESPAN;
403 bp = call->request;
407 trace_afs_make_vl_call(call);
408 afs_make_call(ac, call, GFP_KERNEL);
409 return call;
413 * Deliver reply data to a YFSVL.GetEndpoints call.
421 static int afs_deliver_yfsvl_get_endpoints(struct afs_call *call)
429 call->unmarshall, iov_iter_count(call->iter), call->count2);
431 switch (call->unmarshall) {
433 afs_extract_to_buf(call, sizeof(uuid_t) + 3 * sizeof(__be32));
434 call->unmarshall = 1;
441 ret = afs_extract_data(call, true);
445 bp = call->buffer + sizeof(uuid_t);
447 call->count = ntohl(*bp++);
448 call->count2 = ntohl(*bp); /* Type or next count */
450 if (call->count > YFS_MAXENDPOINTS)
451 return afs_protocol_error(call, afs_eproto_yvl_fsendpt_num);
453 alist = afs_alloc_addrlist(call->count, FS_SERVICE, AFS_FS_PORT);
457 call->ret_alist = alist;
459 if (call->count == 0)
463 switch (call->count2) {
471 return afs_protocol_error(call, afs_eproto_yvl_fsendpt_type);
475 afs_extract_to_buf(call, size);
476 call->unmarshall = 2;
480 ret = afs_extract_data(call, true);
484 alist = call->ret_alist;
485 bp = call->buffer;
486 switch (call->count2) {
490 call, afs_eproto_yvl_fsendpt4_len);
497 call, afs_eproto_yvl_fsendpt6_len);
502 return afs_protocol_error(call, afs_eproto_yvl_fsendpt_type);
508 call->count2 = ntohl(*bp++);
510 call->count--;
511 if (call->count > 0)
516 call->count = call->count2;
517 if (!call->count)
519 if (call->count > YFS_MAXENDPOINTS)
520 return afs_protocol_error(call, afs_eproto_yvl_vlendpt_type);
522 afs_extract_to_buf(call, 1 * sizeof(__be32));
523 call->unmarshall = 3;
531 ret = afs_extract_data(call, true);
535 bp = call->buffer;
538 call->count2 = ntohl(*bp++);
539 switch (call->count2) {
547 return afs_protocol_error(call, afs_eproto_yvl_vlendpt_type);
550 if (call->count > 1)
552 afs_extract_to_buf(call, size);
553 call->unmarshall = 4;
557 ret = afs_extract_data(call, true);
561 bp = call->buffer;
562 switch (call->count2) {
566 call, afs_eproto_yvl_vlendpt4_len);
572 call, afs_eproto_yvl_vlendpt6_len);
576 return afs_protocol_error(call, afs_eproto_yvl_vlendpt_type);
582 call->count--;
583 if (call->count > 0)
587 afs_extract_discard(call, 0);
588 call->unmarshall = 5;
592 ret = afs_extract_data(call, false);
595 call->unmarshall = 6;
623 struct afs_call *call;
629 call = afs_alloc_flat_call(net, &afs_YFSVLGetEndpoints,
632 if (!call)
635 call->key = vc->key;
636 call->ret_alist = NULL;
637 call->max_lifespan = AFS_VL_MAX_LIFESPAN;
640 bp = call->request;
645 trace_afs_make_vl_call(call);
646 afs_make_call(&vc->ac, call, GFP_KERNEL);
647 return (struct afs_addr_list *)afs_wait_for_call_to_complete(call, &vc->ac);
653 static int afs_deliver_yfsvl_get_cell_name(struct afs_call *call)
660 call->unmarshall, iov_iter_count(call->iter), call->count);
662 switch (call->unmarshall) {
664 afs_extract_to_tmp(call);
665 call->unmarshall++;
669 ret = afs_extract_data(call, true);
673 namesz = ntohl(call->tmp);
675 return afs_protocol_error(call, afs_eproto_cellname_len);
677 call->count = namesz;
678 call->count2 = paddedsz - namesz;
684 call->ret_str = cell_name;
686 afs_extract_begin(call, cell_name, namesz);
687 call->unmarshall++;
691 ret = afs_extract_data(call, true);
695 afs_extract_discard(call, call->count2);
696 call->unmarshall++;
700 ret = afs_extract_data(call, false);
704 call->unmarshall++;
712 static void afs_destroy_yfsvl_get_cell_name(struct afs_call *call)
714 kfree(call->ret_str);
715 afs_flat_call_destructor(call);
737 struct afs_call *call;
743 call = afs_alloc_flat_call(net, &afs_YFSVLGetCellName, 1 * 4, 0);
744 if (!call)
747 call->key = vc->key;
748 call->ret_str = NULL;
749 call->max_lifespan = AFS_VL_MAX_LIFESPAN;
752 bp = call->request;
756 trace_afs_make_vl_call(call);
757 afs_make_call(&vc->ac, call, GFP_KERNEL);
758 return (char *)afs_wait_for_call_to_complete(call, &vc->ac);