Lines Matching refs:call

21 static int afs_deliver_vl_get_entry_by_name_u(struct afs_call *call)  in afs_deliver_vl_get_entry_by_name_u()  argument
31 ret = afs_transfer_reply(call); in afs_deliver_vl_get_entry_by_name_u()
36 uvldb = call->buffer; in afs_deliver_vl_get_entry_by_name_u()
37 entry = call->reply[0]; in afs_deliver_vl_get_entry_by_name_u()
111 static void afs_destroy_vl_get_entry_by_name_u(struct afs_call *call) in afs_destroy_vl_get_entry_by_name_u() argument
113 kfree(call->reply[0]); in afs_destroy_vl_get_entry_by_name_u()
114 afs_flat_call_destructor(call); in afs_destroy_vl_get_entry_by_name_u()
138 struct afs_call *call; in afs_vl_get_entry_by_name_u() local
151 call = afs_alloc_flat_call(net, &afs_RXVLGetEntryByNameU, reqsz, in afs_vl_get_entry_by_name_u()
153 if (!call) { in afs_vl_get_entry_by_name_u()
158 call->key = key; in afs_vl_get_entry_by_name_u()
159 call->reply[0] = entry; in afs_vl_get_entry_by_name_u()
160 call->ret_reply0 = true; in afs_vl_get_entry_by_name_u()
163 bp = call->request; in afs_vl_get_entry_by_name_u()
170 trace_afs_make_vl_call(call); in afs_vl_get_entry_by_name_u()
171 return (struct afs_vldb_entry *)afs_make_call(ac, call, GFP_KERNEL, false); in afs_vl_get_entry_by_name_u()
183 static int afs_deliver_vl_get_addrs_u(struct afs_call *call) in afs_deliver_vl_get_addrs_u() argument
190 _enter("{%u,%zu/%u}", call->unmarshall, call->offset, call->count); in afs_deliver_vl_get_addrs_u()
193 switch (call->unmarshall) { in afs_deliver_vl_get_addrs_u()
195 call->offset = 0; in afs_deliver_vl_get_addrs_u()
196 call->unmarshall++; in afs_deliver_vl_get_addrs_u()
200 ret = afs_extract_data(call, call->buffer, in afs_deliver_vl_get_addrs_u()
206 bp = call->buffer + sizeof(struct afs_uuid__xdr); in afs_deliver_vl_get_addrs_u()
216 call->reply[0] = alist; in afs_deliver_vl_get_addrs_u()
217 call->count = count; in afs_deliver_vl_get_addrs_u()
218 call->count2 = nentries; in afs_deliver_vl_get_addrs_u()
219 call->offset = 0; in afs_deliver_vl_get_addrs_u()
220 call->unmarshall++; in afs_deliver_vl_get_addrs_u()
224 count = min(call->count, 4U); in afs_deliver_vl_get_addrs_u()
225 ret = afs_extract_data(call, call->buffer, in afs_deliver_vl_get_addrs_u()
227 call->count > 4); in afs_deliver_vl_get_addrs_u()
231 alist = call->reply[0]; in afs_deliver_vl_get_addrs_u()
232 bp = call->buffer; in afs_deliver_vl_get_addrs_u()
234 if (alist->nr_addrs < call->count2) in afs_deliver_vl_get_addrs_u()
237 call->count -= count; in afs_deliver_vl_get_addrs_u()
238 if (call->count > 0) in afs_deliver_vl_get_addrs_u()
240 call->offset = 0; in afs_deliver_vl_get_addrs_u()
241 call->unmarshall++; in afs_deliver_vl_get_addrs_u()
249 static void afs_vl_get_addrs_u_destructor(struct afs_call *call) in afs_vl_get_addrs_u_destructor() argument
251 afs_put_server(call->net, (struct afs_server *)call->reply[0]); in afs_vl_get_addrs_u_destructor()
252 kfree(call->reply[1]); in afs_vl_get_addrs_u_destructor()
253 return afs_flat_call_destructor(call); in afs_vl_get_addrs_u_destructor()
277 struct afs_call *call; in afs_vl_get_addrs_u() local
283 call = afs_alloc_flat_call(net, &afs_RXVLGetAddrsU, in afs_vl_get_addrs_u()
286 if (!call) in afs_vl_get_addrs_u()
289 call->key = key; in afs_vl_get_addrs_u()
290 call->reply[0] = NULL; in afs_vl_get_addrs_u()
291 call->ret_reply0 = true; in afs_vl_get_addrs_u()
294 bp = call->request; in afs_vl_get_addrs_u()
309 trace_afs_make_vl_call(call); in afs_vl_get_addrs_u()
310 return (struct afs_addr_list *)afs_make_call(ac, call, GFP_KERNEL, false); in afs_vl_get_addrs_u()
316 static int afs_deliver_vl_get_capabilities(struct afs_call *call) in afs_deliver_vl_get_capabilities() argument
321 _enter("{%u,%zu/%u}", call->unmarshall, call->offset, call->count); in afs_deliver_vl_get_capabilities()
324 switch (call->unmarshall) { in afs_deliver_vl_get_capabilities()
326 call->offset = 0; in afs_deliver_vl_get_capabilities()
327 call->unmarshall++; in afs_deliver_vl_get_capabilities()
331 ret = afs_extract_data(call, &call->tmp, in afs_deliver_vl_get_capabilities()
337 count = ntohl(call->tmp); in afs_deliver_vl_get_capabilities()
339 call->count = count; in afs_deliver_vl_get_capabilities()
340 call->count2 = count; in afs_deliver_vl_get_capabilities()
341 call->offset = 0; in afs_deliver_vl_get_capabilities()
342 call->unmarshall++; in afs_deliver_vl_get_capabilities()
346 count = min(call->count, 16U); in afs_deliver_vl_get_capabilities()
347 ret = afs_extract_data(call, call->buffer, in afs_deliver_vl_get_capabilities()
349 call->count > 16); in afs_deliver_vl_get_capabilities()
355 call->count -= count; in afs_deliver_vl_get_capabilities()
356 if (call->count > 0) in afs_deliver_vl_get_capabilities()
358 call->offset = 0; in afs_deliver_vl_get_capabilities()
359 call->unmarshall++; in afs_deliver_vl_get_capabilities()
363 call->reply[0] = (void *)(unsigned long)call->service_id; in afs_deliver_vl_get_capabilities()
390 struct afs_call *call; in afs_vl_get_capabilities() local
395 call = afs_alloc_flat_call(net, &afs_RXVLGetCapabilities, 1 * 4, 16 * 4); in afs_vl_get_capabilities()
396 if (!call) in afs_vl_get_capabilities()
399 call->key = key; in afs_vl_get_capabilities()
400 call->upgrade = true; /* Let's see if this is a YFS server */ in afs_vl_get_capabilities()
401 call->reply[0] = (void *)VLGETCAPABILITIES; in afs_vl_get_capabilities()
402 call->ret_reply0 = true; in afs_vl_get_capabilities()
405 bp = call->request; in afs_vl_get_capabilities()
409 trace_afs_make_vl_call(call); in afs_vl_get_capabilities()
410 return afs_make_call(ac, call, GFP_KERNEL, false); in afs_vl_get_capabilities()
422 static int afs_deliver_yfsvl_get_endpoints(struct afs_call *call) in afs_deliver_yfsvl_get_endpoints() argument
429 _enter("{%u,%zu/%u,%u}", call->unmarshall, call->offset, call->count, call->count2); in afs_deliver_yfsvl_get_endpoints()
432 switch (call->unmarshall) { in afs_deliver_yfsvl_get_endpoints()
434 call->offset = 0; in afs_deliver_yfsvl_get_endpoints()
435 call->unmarshall = 1; in afs_deliver_yfsvl_get_endpoints()
441 ret = afs_extract_data(call, call->buffer, in afs_deliver_yfsvl_get_endpoints()
448 bp = call->buffer + sizeof(uuid_t); in afs_deliver_yfsvl_get_endpoints()
450 call->count = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
451 call->count2 = ntohl(*bp); /* Type or next count */ in afs_deliver_yfsvl_get_endpoints()
453 if (call->count > YFS_MAXENDPOINTS) in afs_deliver_yfsvl_get_endpoints()
454 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
456 alist = afs_alloc_addrlist(call->count, FS_SERVICE, AFS_FS_PORT); in afs_deliver_yfsvl_get_endpoints()
460 call->reply[0] = alist; in afs_deliver_yfsvl_get_endpoints()
461 call->offset = 0; in afs_deliver_yfsvl_get_endpoints()
463 if (call->count == 0) in afs_deliver_yfsvl_get_endpoints()
466 call->unmarshall = 2; in afs_deliver_yfsvl_get_endpoints()
470 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
478 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
482 ret = afs_extract_data(call, call->buffer, size, true); in afs_deliver_yfsvl_get_endpoints()
486 alist = call->reply[0]; in afs_deliver_yfsvl_get_endpoints()
487 bp = call->buffer; in afs_deliver_yfsvl_get_endpoints()
488 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
491 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
497 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
502 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
508 call->count2 = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
510 call->offset = 0; in afs_deliver_yfsvl_get_endpoints()
511 call->count--; in afs_deliver_yfsvl_get_endpoints()
512 if (call->count > 0) in afs_deliver_yfsvl_get_endpoints()
517 call->count = call->count2; in afs_deliver_yfsvl_get_endpoints()
518 if (!call->count) in afs_deliver_yfsvl_get_endpoints()
520 if (call->count > YFS_MAXENDPOINTS) in afs_deliver_yfsvl_get_endpoints()
521 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
523 call->unmarshall = 3; in afs_deliver_yfsvl_get_endpoints()
530 ret = afs_extract_data(call, call->buffer, sizeof(__be32), true); in afs_deliver_yfsvl_get_endpoints()
534 bp = call->buffer; in afs_deliver_yfsvl_get_endpoints()
535 call->count2 = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
536 call->offset = 0; in afs_deliver_yfsvl_get_endpoints()
537 call->unmarshall = 4; in afs_deliver_yfsvl_get_endpoints()
541 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
549 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
552 if (call->count > 1) in afs_deliver_yfsvl_get_endpoints()
554 ret = afs_extract_data(call, call->buffer, size, true); in afs_deliver_yfsvl_get_endpoints()
558 bp = call->buffer; in afs_deliver_yfsvl_get_endpoints()
559 switch (call->count2) { in afs_deliver_yfsvl_get_endpoints()
562 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
567 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
571 return afs_protocol_error(call, -EBADMSG); in afs_deliver_yfsvl_get_endpoints()
577 call->offset = 0; in afs_deliver_yfsvl_get_endpoints()
578 call->count--; in afs_deliver_yfsvl_get_endpoints()
579 if (call->count > 0) { in afs_deliver_yfsvl_get_endpoints()
580 call->count2 = ntohl(*bp++); in afs_deliver_yfsvl_get_endpoints()
585 call->unmarshall = 5; in afs_deliver_yfsvl_get_endpoints()
589 ret = afs_extract_data(call, call->buffer, 0, false); in afs_deliver_yfsvl_get_endpoints()
592 call->unmarshall = 6; in afs_deliver_yfsvl_get_endpoints()
598 alist = call->reply[0]; in afs_deliver_yfsvl_get_endpoints()
627 struct afs_call *call; in afs_yfsvl_get_endpoints() local
632 call = afs_alloc_flat_call(net, &afs_YFSVLGetEndpoints, in afs_yfsvl_get_endpoints()
635 if (!call) in afs_yfsvl_get_endpoints()
638 call->key = key; in afs_yfsvl_get_endpoints()
639 call->reply[0] = NULL; in afs_yfsvl_get_endpoints()
640 call->ret_reply0 = true; in afs_yfsvl_get_endpoints()
643 bp = call->request; in afs_yfsvl_get_endpoints()
648 trace_afs_make_vl_call(call); in afs_yfsvl_get_endpoints()
649 return (struct afs_addr_list *)afs_make_call(ac, call, GFP_KERNEL, false); in afs_yfsvl_get_endpoints()