Lines Matching refs:call
18 static inline void afs_use_fs_server(struct afs_call *call, struct afs_cb_interest *cbi) in afs_use_fs_server() argument
20 call->cbi = afs_get_cb_interest(cbi); in afs_use_fs_server()
60 struct afs_call *call, in xdr_decode_AFSFetchStatus() argument
65 bool inline_error = (call->operation_ID == afs_FS_InlineBulkStatus); in xdr_decode_AFSFetchStatus()
133 afs_protocol_error(call, -EBADMSG, afs_eproto_bad_status); in xdr_decode_AFSFetchStatus()
137 static time64_t xdr_decode_expiry(struct afs_call *call, u32 expiry) in xdr_decode_expiry() argument
139 return ktime_divns(call->issue_time, NSEC_PER_SEC) + expiry; in xdr_decode_expiry()
143 struct afs_call *call, in xdr_decode_AFSCallBack() argument
150 cb->expires_at = xdr_decode_expiry(call, ntohl(*bp++)); in xdr_decode_AFSCallBack()
243 static int afs_deliver_fs_fetch_status_vnode(struct afs_call *call) in afs_deliver_fs_fetch_status_vnode() argument
248 ret = afs_transfer_reply(call); in afs_deliver_fs_fetch_status_vnode()
253 bp = call->buffer; in afs_deliver_fs_fetch_status_vnode()
254 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_fetch_status_vnode()
255 xdr_decode_AFSCallBack(&bp, call, call->out_scb); in afs_deliver_fs_fetch_status_vnode()
256 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_fetch_status_vnode()
279 struct afs_call *call; in afs_fs_fetch_file_status() local
289 call = afs_alloc_flat_call(net, &afs_RXFSFetchStatus_vnode, in afs_fs_fetch_file_status()
291 if (!call) { in afs_fs_fetch_file_status()
296 call->key = fc->key; in afs_fs_fetch_file_status()
297 call->out_scb = scb; in afs_fs_fetch_file_status()
298 call->out_volsync = volsync; in afs_fs_fetch_file_status()
301 bp = call->request; in afs_fs_fetch_file_status()
307 afs_use_fs_server(call, fc->cbi); in afs_fs_fetch_file_status()
308 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_fetch_file_status()
310 afs_set_fc_call(call, fc); in afs_fs_fetch_file_status()
311 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_fetch_file_status()
312 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_fetch_file_status()
318 static int afs_deliver_fs_fetch_data(struct afs_call *call) in afs_deliver_fs_fetch_data() argument
320 struct afs_read *req = call->read_request; in afs_deliver_fs_fetch_data()
326 call->unmarshall, iov_iter_count(&call->iter), req->actual_len); in afs_deliver_fs_fetch_data()
328 switch (call->unmarshall) { in afs_deliver_fs_fetch_data()
333 call->unmarshall++; in afs_deliver_fs_fetch_data()
334 if (call->operation_ID == FSFETCHDATA64) { in afs_deliver_fs_fetch_data()
335 afs_extract_to_tmp64(call); in afs_deliver_fs_fetch_data()
337 call->tmp_u = htonl(0); in afs_deliver_fs_fetch_data()
338 afs_extract_to_tmp(call); in afs_deliver_fs_fetch_data()
345 ret = afs_extract_data(call, true); in afs_deliver_fs_fetch_data()
349 req->actual_len = be64_to_cpu(call->tmp64); in afs_deliver_fs_fetch_data()
355 call->unmarshall++; in afs_deliver_fs_fetch_data()
363 call->bvec[0].bv_len = size; in afs_deliver_fs_fetch_data()
364 call->bvec[0].bv_offset = req->offset; in afs_deliver_fs_fetch_data()
365 call->bvec[0].bv_page = req->pages[req->index]; in afs_deliver_fs_fetch_data()
366 iov_iter_bvec(&call->iter, READ, call->bvec, 1, size); in afs_deliver_fs_fetch_data()
373 iov_iter_count(&call->iter), req->remain); in afs_deliver_fs_fetch_data()
375 ret = afs_extract_data(call, true); in afs_deliver_fs_fetch_data()
378 req->remain -= call->bvec[0].bv_len; in afs_deliver_fs_fetch_data()
379 req->offset += call->bvec[0].bv_len; in afs_deliver_fs_fetch_data()
393 afs_extract_discard(call, req->actual_len - req->len); in afs_deliver_fs_fetch_data()
394 call->unmarshall = 3; in afs_deliver_fs_fetch_data()
399 iov_iter_count(&call->iter), req->actual_len - req->len); in afs_deliver_fs_fetch_data()
401 ret = afs_extract_data(call, true); in afs_deliver_fs_fetch_data()
406 call->unmarshall = 4; in afs_deliver_fs_fetch_data()
407 afs_extract_to_buf(call, (21 + 3 + 6) * 4); in afs_deliver_fs_fetch_data()
412 ret = afs_extract_data(call, false); in afs_deliver_fs_fetch_data()
416 bp = call->buffer; in afs_deliver_fs_fetch_data()
417 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_fetch_data()
418 xdr_decode_AFSCallBack(&bp, call, call->out_scb); in afs_deliver_fs_fetch_data()
419 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_fetch_data()
421 req->data_version = call->out_scb->status.data_version; in afs_deliver_fs_fetch_data()
422 req->file_size = call->out_scb->status.size; in afs_deliver_fs_fetch_data()
424 call->unmarshall++; in afs_deliver_fs_fetch_data()
445 static void afs_fetch_data_destructor(struct afs_call *call) in afs_fetch_data_destructor() argument
447 struct afs_read *req = call->read_request; in afs_fetch_data_destructor()
450 afs_flat_call_destructor(call); in afs_fetch_data_destructor()
478 struct afs_call *call; in afs_fs_fetch_data64() local
484 call = afs_alloc_flat_call(net, &afs_RXFSFetchData64, 32, (21 + 3 + 6) * 4); in afs_fs_fetch_data64()
485 if (!call) in afs_fs_fetch_data64()
488 call->key = fc->key; in afs_fs_fetch_data64()
489 call->out_scb = scb; in afs_fs_fetch_data64()
490 call->out_volsync = NULL; in afs_fs_fetch_data64()
491 call->read_request = req; in afs_fs_fetch_data64()
494 bp = call->request; in afs_fs_fetch_data64()
505 afs_use_fs_server(call, fc->cbi); in afs_fs_fetch_data64()
506 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_fetch_data64()
507 afs_set_fc_call(call, fc); in afs_fs_fetch_data64()
508 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_fetch_data64()
509 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_fetch_data64()
520 struct afs_call *call; in afs_fs_fetch_data() local
534 call = afs_alloc_flat_call(net, &afs_RXFSFetchData, 24, (21 + 3 + 6) * 4); in afs_fs_fetch_data()
535 if (!call) in afs_fs_fetch_data()
538 call->key = fc->key; in afs_fs_fetch_data()
539 call->out_scb = scb; in afs_fs_fetch_data()
540 call->out_volsync = NULL; in afs_fs_fetch_data()
541 call->read_request = req; in afs_fs_fetch_data()
544 bp = call->request; in afs_fs_fetch_data()
553 afs_use_fs_server(call, fc->cbi); in afs_fs_fetch_data()
554 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_fetch_data()
555 afs_set_fc_call(call, fc); in afs_fs_fetch_data()
556 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_fetch_data()
557 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_fetch_data()
563 static int afs_deliver_fs_create_vnode(struct afs_call *call) in afs_deliver_fs_create_vnode() argument
568 ret = afs_transfer_reply(call); in afs_deliver_fs_create_vnode()
573 bp = call->buffer; in afs_deliver_fs_create_vnode()
574 xdr_decode_AFSFid(&bp, call->out_fid); in afs_deliver_fs_create_vnode()
575 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_create_vnode()
576 xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_create_vnode()
577 xdr_decode_AFSCallBack(&bp, call, call->out_scb); in afs_deliver_fs_create_vnode()
578 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_create_vnode()
612 struct afs_call *call; in afs_fs_create() local
632 call = afs_alloc_flat_call( in afs_fs_create()
635 if (!call) in afs_fs_create()
638 call->key = fc->key; in afs_fs_create()
639 call->out_dir_scb = dvnode_scb; in afs_fs_create()
640 call->out_fid = newfid; in afs_fs_create()
641 call->out_scb = new_scb; in afs_fs_create()
644 bp = call->request; in afs_fs_create()
663 afs_use_fs_server(call, fc->cbi); in afs_fs_create()
664 trace_afs_make_fs_call1(call, &dvnode->fid, name); in afs_fs_create()
665 afs_set_fc_call(call, fc); in afs_fs_create()
666 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_create()
667 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_create()
674 static int afs_deliver_fs_dir_status_and_vol(struct afs_call *call) in afs_deliver_fs_dir_status_and_vol() argument
679 ret = afs_transfer_reply(call); in afs_deliver_fs_dir_status_and_vol()
684 bp = call->buffer; in afs_deliver_fs_dir_status_and_vol()
685 xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_dir_status_and_vol()
686 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_dir_status_and_vol()
716 struct afs_call *call; in afs_fs_remove() local
730 call = afs_alloc_flat_call( in afs_fs_remove()
733 if (!call) in afs_fs_remove()
736 call->key = fc->key; in afs_fs_remove()
737 call->out_dir_scb = dvnode_scb; in afs_fs_remove()
740 bp = call->request; in afs_fs_remove()
753 afs_use_fs_server(call, fc->cbi); in afs_fs_remove()
754 trace_afs_make_fs_call1(call, &dvnode->fid, name); in afs_fs_remove()
755 afs_set_fc_call(call, fc); in afs_fs_remove()
756 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_remove()
757 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_remove()
763 static int afs_deliver_fs_link(struct afs_call *call) in afs_deliver_fs_link() argument
768 _enter("{%u}", call->unmarshall); in afs_deliver_fs_link()
770 ret = afs_transfer_reply(call); in afs_deliver_fs_link()
775 bp = call->buffer; in afs_deliver_fs_link()
776 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_link()
777 xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_link()
778 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_link()
803 struct afs_call *call; in afs_fs_link() local
817 call = afs_alloc_flat_call(net, &afs_RXFSLink, reqsz, (21 + 21 + 6) * 4); in afs_fs_link()
818 if (!call) in afs_fs_link()
821 call->key = fc->key; in afs_fs_link()
822 call->out_dir_scb = dvnode_scb; in afs_fs_link()
823 call->out_scb = vnode_scb; in afs_fs_link()
826 bp = call->request; in afs_fs_link()
842 afs_use_fs_server(call, fc->cbi); in afs_fs_link()
843 trace_afs_make_fs_call1(call, &vnode->fid, name); in afs_fs_link()
844 afs_set_fc_call(call, fc); in afs_fs_link()
845 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_link()
846 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_link()
852 static int afs_deliver_fs_symlink(struct afs_call *call) in afs_deliver_fs_symlink() argument
857 _enter("{%u}", call->unmarshall); in afs_deliver_fs_symlink()
859 ret = afs_transfer_reply(call); in afs_deliver_fs_symlink()
864 bp = call->buffer; in afs_deliver_fs_symlink()
865 xdr_decode_AFSFid(&bp, call->out_fid); in afs_deliver_fs_symlink()
866 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_symlink()
867 xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_symlink()
868 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_symlink()
895 struct afs_call *call; in afs_fs_symlink() local
914 call = afs_alloc_flat_call(net, &afs_RXFSSymlink, reqsz, in afs_fs_symlink()
916 if (!call) in afs_fs_symlink()
919 call->key = fc->key; in afs_fs_symlink()
920 call->out_dir_scb = dvnode_scb; in afs_fs_symlink()
921 call->out_fid = newfid; in afs_fs_symlink()
922 call->out_scb = new_scb; in afs_fs_symlink()
925 bp = call->request; in afs_fs_symlink()
951 afs_use_fs_server(call, fc->cbi); in afs_fs_symlink()
952 trace_afs_make_fs_call1(call, &dvnode->fid, name); in afs_fs_symlink()
953 afs_set_fc_call(call, fc); in afs_fs_symlink()
954 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_symlink()
955 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_symlink()
961 static int afs_deliver_fs_rename(struct afs_call *call) in afs_deliver_fs_rename() argument
966 ret = afs_transfer_reply(call); in afs_deliver_fs_rename()
970 bp = call->buffer; in afs_deliver_fs_rename()
974 xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_rename()
975 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_rename()
976 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_rename()
1003 struct afs_call *call; in afs_fs_rename() local
1027 call = afs_alloc_flat_call(net, &afs_RXFSRename, reqsz, (21 + 21 + 6) * 4); in afs_fs_rename()
1028 if (!call) in afs_fs_rename()
1031 call->key = fc->key; in afs_fs_rename()
1032 call->out_dir_scb = orig_dvnode_scb; in afs_fs_rename()
1033 call->out_scb = new_dvnode_scb; in afs_fs_rename()
1036 bp = call->request; in afs_fs_rename()
1060 afs_use_fs_server(call, fc->cbi); in afs_fs_rename()
1061 trace_afs_make_fs_call2(call, &orig_dvnode->fid, orig_name, new_name); in afs_fs_rename()
1062 afs_set_fc_call(call, fc); in afs_fs_rename()
1063 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_rename()
1064 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_rename()
1070 static int afs_deliver_fs_store_data(struct afs_call *call) in afs_deliver_fs_store_data() argument
1077 ret = afs_transfer_reply(call); in afs_deliver_fs_store_data()
1082 bp = call->buffer; in afs_deliver_fs_store_data()
1083 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_store_data()
1084 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_store_data()
1118 struct afs_call *call; in afs_fs_store_data64() local
1125 call = afs_alloc_flat_call(net, &afs_RXFSStoreData64, in afs_fs_store_data64()
1128 if (!call) in afs_fs_store_data64()
1131 call->key = fc->key; in afs_fs_store_data64()
1132 call->mapping = mapping; in afs_fs_store_data64()
1133 call->first = first; in afs_fs_store_data64()
1134 call->last = last; in afs_fs_store_data64()
1135 call->first_offset = offset; in afs_fs_store_data64()
1136 call->last_to = to; in afs_fs_store_data64()
1137 call->send_pages = true; in afs_fs_store_data64()
1138 call->out_scb = scb; in afs_fs_store_data64()
1141 bp = call->request; in afs_fs_store_data64()
1161 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_store_data64()
1162 afs_set_fc_call(call, fc); in afs_fs_store_data64()
1163 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_store_data64()
1164 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_store_data64()
1176 struct afs_call *call; in afs_fs_store_data() local
1205 call = afs_alloc_flat_call(net, &afs_RXFSStoreData, in afs_fs_store_data()
1208 if (!call) in afs_fs_store_data()
1211 call->key = fc->key; in afs_fs_store_data()
1212 call->mapping = mapping; in afs_fs_store_data()
1213 call->first = first; in afs_fs_store_data()
1214 call->last = last; in afs_fs_store_data()
1215 call->first_offset = offset; in afs_fs_store_data()
1216 call->last_to = to; in afs_fs_store_data()
1217 call->send_pages = true; in afs_fs_store_data()
1218 call->out_scb = scb; in afs_fs_store_data()
1221 bp = call->request; in afs_fs_store_data()
1238 afs_use_fs_server(call, fc->cbi); in afs_fs_store_data()
1239 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_store_data()
1240 afs_set_fc_call(call, fc); in afs_fs_store_data()
1241 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_store_data()
1242 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_store_data()
1248 static int afs_deliver_fs_store_status(struct afs_call *call) in afs_deliver_fs_store_status() argument
1255 ret = afs_transfer_reply(call); in afs_deliver_fs_store_status()
1260 bp = call->buffer; in afs_deliver_fs_store_status()
1261 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_store_status()
1262 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_store_status()
1300 struct afs_call *call; in afs_fs_setattr_size64() local
1309 call = afs_alloc_flat_call(net, &afs_RXFSStoreData64_as_Status, in afs_fs_setattr_size64()
1312 if (!call) in afs_fs_setattr_size64()
1315 call->key = fc->key; in afs_fs_setattr_size64()
1316 call->out_scb = scb; in afs_fs_setattr_size64()
1319 bp = call->request; in afs_fs_setattr_size64()
1334 afs_use_fs_server(call, fc->cbi); in afs_fs_setattr_size64()
1335 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_setattr_size64()
1336 afs_set_fc_call(call, fc); in afs_fs_setattr_size64()
1337 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_setattr_size64()
1338 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_setattr_size64()
1349 struct afs_call *call; in afs_fs_setattr_size() local
1360 call = afs_alloc_flat_call(net, &afs_RXFSStoreData_as_Status, in afs_fs_setattr_size()
1363 if (!call) in afs_fs_setattr_size()
1366 call->key = fc->key; in afs_fs_setattr_size()
1367 call->out_scb = scb; in afs_fs_setattr_size()
1370 bp = call->request; in afs_fs_setattr_size()
1382 afs_use_fs_server(call, fc->cbi); in afs_fs_setattr_size()
1383 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_setattr_size()
1384 afs_set_fc_call(call, fc); in afs_fs_setattr_size()
1385 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_setattr_size()
1386 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_setattr_size()
1397 struct afs_call *call; in afs_fs_setattr() local
1410 call = afs_alloc_flat_call(net, &afs_RXFSStoreStatus, in afs_fs_setattr()
1413 if (!call) in afs_fs_setattr()
1416 call->key = fc->key; in afs_fs_setattr()
1417 call->out_scb = scb; in afs_fs_setattr()
1420 bp = call->request; in afs_fs_setattr()
1428 afs_use_fs_server(call, fc->cbi); in afs_fs_setattr()
1429 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_setattr()
1430 afs_set_fc_call(call, fc); in afs_fs_setattr()
1431 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_setattr()
1432 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_setattr()
1438 static int afs_deliver_fs_get_volume_status(struct afs_call *call) in afs_deliver_fs_get_volume_status() argument
1445 _enter("{%u}", call->unmarshall); in afs_deliver_fs_get_volume_status()
1447 switch (call->unmarshall) { in afs_deliver_fs_get_volume_status()
1449 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1450 afs_extract_to_buf(call, 12 * 4); in afs_deliver_fs_get_volume_status()
1456 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1460 bp = call->buffer; in afs_deliver_fs_get_volume_status()
1461 xdr_decode_AFSFetchVolumeStatus(&bp, call->out_volstatus); in afs_deliver_fs_get_volume_status()
1462 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1463 afs_extract_to_tmp(call); in afs_deliver_fs_get_volume_status()
1468 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1472 call->count = ntohl(call->tmp); in afs_deliver_fs_get_volume_status()
1473 _debug("volname length: %u", call->count); in afs_deliver_fs_get_volume_status()
1474 if (call->count >= AFSNAMEMAX) in afs_deliver_fs_get_volume_status()
1475 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_get_volume_status()
1477 size = (call->count + 3) & ~3; /* It's padded */ in afs_deliver_fs_get_volume_status()
1478 afs_extract_to_buf(call, size); in afs_deliver_fs_get_volume_status()
1479 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1485 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1489 p = call->buffer; in afs_deliver_fs_get_volume_status()
1490 p[call->count] = 0; in afs_deliver_fs_get_volume_status()
1492 afs_extract_to_tmp(call); in afs_deliver_fs_get_volume_status()
1493 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1498 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1502 call->count = ntohl(call->tmp); in afs_deliver_fs_get_volume_status()
1503 _debug("offline msg length: %u", call->count); in afs_deliver_fs_get_volume_status()
1504 if (call->count >= AFSNAMEMAX) in afs_deliver_fs_get_volume_status()
1505 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_get_volume_status()
1507 size = (call->count + 3) & ~3; /* It's padded */ in afs_deliver_fs_get_volume_status()
1508 afs_extract_to_buf(call, size); in afs_deliver_fs_get_volume_status()
1509 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1515 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1519 p = call->buffer; in afs_deliver_fs_get_volume_status()
1520 p[call->count] = 0; in afs_deliver_fs_get_volume_status()
1523 afs_extract_to_tmp(call); in afs_deliver_fs_get_volume_status()
1524 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1529 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1533 call->count = ntohl(call->tmp); in afs_deliver_fs_get_volume_status()
1534 _debug("motd length: %u", call->count); in afs_deliver_fs_get_volume_status()
1535 if (call->count >= AFSNAMEMAX) in afs_deliver_fs_get_volume_status()
1536 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_get_volume_status()
1538 size = (call->count + 3) & ~3; /* It's padded */ in afs_deliver_fs_get_volume_status()
1539 afs_extract_to_buf(call, size); in afs_deliver_fs_get_volume_status()
1540 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1546 ret = afs_extract_data(call, false); in afs_deliver_fs_get_volume_status()
1550 p = call->buffer; in afs_deliver_fs_get_volume_status()
1551 p[call->count] = 0; in afs_deliver_fs_get_volume_status()
1554 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1581 struct afs_call *call; in afs_fs_get_volume_status() local
1590 call = afs_alloc_flat_call(net, &afs_RXFSGetVolumeStatus, 2 * 4, in afs_fs_get_volume_status()
1592 if (!call) in afs_fs_get_volume_status()
1595 call->key = fc->key; in afs_fs_get_volume_status()
1596 call->out_volstatus = vs; in afs_fs_get_volume_status()
1599 bp = call->request; in afs_fs_get_volume_status()
1603 afs_use_fs_server(call, fc->cbi); in afs_fs_get_volume_status()
1604 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_get_volume_status()
1605 afs_set_fc_call(call, fc); in afs_fs_get_volume_status()
1606 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_get_volume_status()
1607 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_get_volume_status()
1613 static int afs_deliver_fs_xxxx_lock(struct afs_call *call) in afs_deliver_fs_xxxx_lock() argument
1618 _enter("{%u}", call->unmarshall); in afs_deliver_fs_xxxx_lock()
1620 ret = afs_transfer_reply(call); in afs_deliver_fs_xxxx_lock()
1625 bp = call->buffer; in afs_deliver_fs_xxxx_lock()
1626 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_xxxx_lock()
1671 struct afs_call *call; in afs_fs_set_lock() local
1680 call = afs_alloc_flat_call(net, &afs_RXFSSetLock, 5 * 4, 6 * 4); in afs_fs_set_lock()
1681 if (!call) in afs_fs_set_lock()
1684 call->key = fc->key; in afs_fs_set_lock()
1685 call->lvnode = vnode; in afs_fs_set_lock()
1686 call->out_scb = scb; in afs_fs_set_lock()
1689 bp = call->request; in afs_fs_set_lock()
1696 afs_use_fs_server(call, fc->cbi); in afs_fs_set_lock()
1697 trace_afs_make_fs_calli(call, &vnode->fid, type); in afs_fs_set_lock()
1698 afs_set_fc_call(call, fc); in afs_fs_set_lock()
1699 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_set_lock()
1700 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_set_lock()
1709 struct afs_call *call; in afs_fs_extend_lock() local
1718 call = afs_alloc_flat_call(net, &afs_RXFSExtendLock, 4 * 4, 6 * 4); in afs_fs_extend_lock()
1719 if (!call) in afs_fs_extend_lock()
1722 call->key = fc->key; in afs_fs_extend_lock()
1723 call->lvnode = vnode; in afs_fs_extend_lock()
1724 call->out_scb = scb; in afs_fs_extend_lock()
1727 bp = call->request; in afs_fs_extend_lock()
1733 afs_use_fs_server(call, fc->cbi); in afs_fs_extend_lock()
1734 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_extend_lock()
1735 afs_set_fc_call(call, fc); in afs_fs_extend_lock()
1736 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_extend_lock()
1737 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_extend_lock()
1746 struct afs_call *call; in afs_fs_release_lock() local
1755 call = afs_alloc_flat_call(net, &afs_RXFSReleaseLock, 4 * 4, 6 * 4); in afs_fs_release_lock()
1756 if (!call) in afs_fs_release_lock()
1759 call->key = fc->key; in afs_fs_release_lock()
1760 call->lvnode = vnode; in afs_fs_release_lock()
1761 call->out_scb = scb; in afs_fs_release_lock()
1764 bp = call->request; in afs_fs_release_lock()
1770 afs_use_fs_server(call, fc->cbi); in afs_fs_release_lock()
1771 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_release_lock()
1772 afs_set_fc_call(call, fc); in afs_fs_release_lock()
1773 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_release_lock()
1774 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_release_lock()
1780 static int afs_deliver_fs_give_up_all_callbacks(struct afs_call *call) in afs_deliver_fs_give_up_all_callbacks() argument
1782 return afs_transfer_reply(call); in afs_deliver_fs_give_up_all_callbacks()
1803 struct afs_call *call; in afs_fs_give_up_all_callbacks() local
1808 call = afs_alloc_flat_call(net, &afs_RXFSGiveUpAllCallBacks, 1 * 4, 0); in afs_fs_give_up_all_callbacks()
1809 if (!call) in afs_fs_give_up_all_callbacks()
1812 call->key = key; in afs_fs_give_up_all_callbacks()
1815 bp = call->request; in afs_fs_give_up_all_callbacks()
1819 afs_make_call(ac, call, GFP_NOFS); in afs_fs_give_up_all_callbacks()
1820 return afs_wait_for_call_to_complete(call, ac); in afs_fs_give_up_all_callbacks()
1826 static int afs_deliver_fs_get_capabilities(struct afs_call *call) in afs_deliver_fs_get_capabilities() argument
1831 _enter("{%u,%zu}", call->unmarshall, iov_iter_count(&call->iter)); in afs_deliver_fs_get_capabilities()
1833 switch (call->unmarshall) { in afs_deliver_fs_get_capabilities()
1835 afs_extract_to_tmp(call); in afs_deliver_fs_get_capabilities()
1836 call->unmarshall++; in afs_deliver_fs_get_capabilities()
1841 ret = afs_extract_data(call, true); in afs_deliver_fs_get_capabilities()
1845 count = ntohl(call->tmp); in afs_deliver_fs_get_capabilities()
1847 call->count = count; in afs_deliver_fs_get_capabilities()
1848 call->count2 = count; in afs_deliver_fs_get_capabilities()
1849 afs_extract_discard(call, count * sizeof(__be32)); in afs_deliver_fs_get_capabilities()
1850 call->unmarshall++; in afs_deliver_fs_get_capabilities()
1855 ret = afs_extract_data(call, false); in afs_deliver_fs_get_capabilities()
1861 call->unmarshall++; in afs_deliver_fs_get_capabilities()
1890 struct afs_call *call; in afs_fs_get_capabilities() local
1895 call = afs_alloc_flat_call(net, &afs_RXFSGetCapabilities, 1 * 4, 16 * 4); in afs_fs_get_capabilities()
1896 if (!call) in afs_fs_get_capabilities()
1899 call->key = key; in afs_fs_get_capabilities()
1900 call->server = afs_get_server(server, afs_server_trace_get_caps); in afs_fs_get_capabilities()
1901 call->server_index = server_index; in afs_fs_get_capabilities()
1902 call->upgrade = true; in afs_fs_get_capabilities()
1903 call->async = true; in afs_fs_get_capabilities()
1904 call->max_lifespan = AFS_PROBE_MAX_LIFESPAN; in afs_fs_get_capabilities()
1907 bp = call->request; in afs_fs_get_capabilities()
1911 trace_afs_make_fs_call(call, NULL); in afs_fs_get_capabilities()
1912 afs_make_call(ac, call, GFP_NOFS); in afs_fs_get_capabilities()
1913 return call; in afs_fs_get_capabilities()
1919 static int afs_deliver_fs_fetch_status(struct afs_call *call) in afs_deliver_fs_fetch_status() argument
1924 ret = afs_transfer_reply(call); in afs_deliver_fs_fetch_status()
1929 bp = call->buffer; in afs_deliver_fs_fetch_status()
1930 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_fetch_status()
1931 xdr_decode_AFSCallBack(&bp, call, call->out_scb); in afs_deliver_fs_fetch_status()
1932 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_fetch_status()
1957 struct afs_call *call; in afs_fs_fetch_status() local
1966 call = afs_alloc_flat_call(net, &afs_RXFSFetchStatus, 16, (21 + 3 + 6) * 4); in afs_fs_fetch_status()
1967 if (!call) { in afs_fs_fetch_status()
1972 call->key = fc->key; in afs_fs_fetch_status()
1973 call->out_fid = fid; in afs_fs_fetch_status()
1974 call->out_scb = scb; in afs_fs_fetch_status()
1975 call->out_volsync = volsync; in afs_fs_fetch_status()
1978 bp = call->request; in afs_fs_fetch_status()
1984 afs_use_fs_server(call, fc->cbi); in afs_fs_fetch_status()
1985 trace_afs_make_fs_call(call, fid); in afs_fs_fetch_status()
1986 afs_set_fc_call(call, fc); in afs_fs_fetch_status()
1987 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_fetch_status()
1988 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_fetch_status()
1994 static int afs_deliver_fs_inline_bulk_status(struct afs_call *call) in afs_deliver_fs_inline_bulk_status() argument
2001 _enter("{%u}", call->unmarshall); in afs_deliver_fs_inline_bulk_status()
2003 switch (call->unmarshall) { in afs_deliver_fs_inline_bulk_status()
2005 afs_extract_to_tmp(call); in afs_deliver_fs_inline_bulk_status()
2006 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2012 ret = afs_extract_data(call, true); in afs_deliver_fs_inline_bulk_status()
2016 tmp = ntohl(call->tmp); in afs_deliver_fs_inline_bulk_status()
2017 _debug("status count: %u/%u", tmp, call->count2); in afs_deliver_fs_inline_bulk_status()
2018 if (tmp != call->count2) in afs_deliver_fs_inline_bulk_status()
2019 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_inline_bulk_status()
2022 call->count = 0; in afs_deliver_fs_inline_bulk_status()
2023 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2025 afs_extract_to_buf(call, 21 * sizeof(__be32)); in afs_deliver_fs_inline_bulk_status()
2029 _debug("extract status array %u", call->count); in afs_deliver_fs_inline_bulk_status()
2030 ret = afs_extract_data(call, true); in afs_deliver_fs_inline_bulk_status()
2034 bp = call->buffer; in afs_deliver_fs_inline_bulk_status()
2035 scb = &call->out_scb[call->count]; in afs_deliver_fs_inline_bulk_status()
2036 xdr_decode_AFSFetchStatus(&bp, call, scb); in afs_deliver_fs_inline_bulk_status()
2037 call->count++; in afs_deliver_fs_inline_bulk_status()
2038 if (call->count < call->count2) in afs_deliver_fs_inline_bulk_status()
2041 call->count = 0; in afs_deliver_fs_inline_bulk_status()
2042 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2043 afs_extract_to_tmp(call); in afs_deliver_fs_inline_bulk_status()
2049 ret = afs_extract_data(call, true); in afs_deliver_fs_inline_bulk_status()
2053 tmp = ntohl(call->tmp); in afs_deliver_fs_inline_bulk_status()
2055 if (tmp != call->count2) in afs_deliver_fs_inline_bulk_status()
2056 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_inline_bulk_status()
2058 call->count = 0; in afs_deliver_fs_inline_bulk_status()
2059 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2061 afs_extract_to_buf(call, 3 * sizeof(__be32)); in afs_deliver_fs_inline_bulk_status()
2066 ret = afs_extract_data(call, true); in afs_deliver_fs_inline_bulk_status()
2071 bp = call->buffer; in afs_deliver_fs_inline_bulk_status()
2072 scb = &call->out_scb[call->count]; in afs_deliver_fs_inline_bulk_status()
2073 xdr_decode_AFSCallBack(&bp, call, scb); in afs_deliver_fs_inline_bulk_status()
2074 call->count++; in afs_deliver_fs_inline_bulk_status()
2075 if (call->count < call->count2) in afs_deliver_fs_inline_bulk_status()
2078 afs_extract_to_buf(call, 6 * sizeof(__be32)); in afs_deliver_fs_inline_bulk_status()
2079 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2083 ret = afs_extract_data(call, false); in afs_deliver_fs_inline_bulk_status()
2087 bp = call->buffer; in afs_deliver_fs_inline_bulk_status()
2088 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_inline_bulk_status()
2090 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2120 struct afs_call *call; in afs_fs_inline_bulk_status() local
2131 call = afs_alloc_flat_call(net, &afs_RXFSInlineBulkStatus, in afs_fs_inline_bulk_status()
2134 if (!call) { in afs_fs_inline_bulk_status()
2139 call->key = fc->key; in afs_fs_inline_bulk_status()
2140 call->out_scb = statuses; in afs_fs_inline_bulk_status()
2141 call->out_volsync = volsync; in afs_fs_inline_bulk_status()
2142 call->count2 = nr_fids; in afs_fs_inline_bulk_status()
2145 bp = call->request; in afs_fs_inline_bulk_status()
2154 afs_use_fs_server(call, fc->cbi); in afs_fs_inline_bulk_status()
2155 trace_afs_make_fs_call(call, &fids[0]); in afs_fs_inline_bulk_status()
2156 afs_set_fc_call(call, fc); in afs_fs_inline_bulk_status()
2157 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_inline_bulk_status()
2158 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_inline_bulk_status()
2164 static int afs_deliver_fs_fetch_acl(struct afs_call *call) in afs_deliver_fs_fetch_acl() argument
2171 _enter("{%u}", call->unmarshall); in afs_deliver_fs_fetch_acl()
2173 switch (call->unmarshall) { in afs_deliver_fs_fetch_acl()
2175 afs_extract_to_tmp(call); in afs_deliver_fs_fetch_acl()
2176 call->unmarshall++; in afs_deliver_fs_fetch_acl()
2181 ret = afs_extract_data(call, true); in afs_deliver_fs_fetch_acl()
2185 size = call->count2 = ntohl(call->tmp); in afs_deliver_fs_fetch_acl()
2191 call->ret_acl = acl; in afs_deliver_fs_fetch_acl()
2192 acl->size = call->count2; in afs_deliver_fs_fetch_acl()
2193 afs_extract_begin(call, acl->data, size); in afs_deliver_fs_fetch_acl()
2194 call->unmarshall++; in afs_deliver_fs_fetch_acl()
2199 ret = afs_extract_data(call, true); in afs_deliver_fs_fetch_acl()
2203 afs_extract_to_buf(call, (21 + 6) * 4); in afs_deliver_fs_fetch_acl()
2204 call->unmarshall++; in afs_deliver_fs_fetch_acl()
2209 ret = afs_extract_data(call, false); in afs_deliver_fs_fetch_acl()
2213 bp = call->buffer; in afs_deliver_fs_fetch_acl()
2214 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_fetch_acl()
2215 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_fetch_acl()
2217 call->unmarshall++; in afs_deliver_fs_fetch_acl()
2227 static void afs_destroy_fs_fetch_acl(struct afs_call *call) in afs_destroy_fs_fetch_acl() argument
2229 kfree(call->ret_acl); in afs_destroy_fs_fetch_acl()
2230 afs_flat_call_destructor(call); in afs_destroy_fs_fetch_acl()
2250 struct afs_call *call; in afs_fs_fetch_acl() local
2257 call = afs_alloc_flat_call(net, &afs_RXFSFetchACL, 16, (21 + 6) * 4); in afs_fs_fetch_acl()
2258 if (!call) { in afs_fs_fetch_acl()
2263 call->key = fc->key; in afs_fs_fetch_acl()
2264 call->ret_acl = NULL; in afs_fs_fetch_acl()
2265 call->out_scb = scb; in afs_fs_fetch_acl()
2266 call->out_volsync = NULL; in afs_fs_fetch_acl()
2269 bp = call->request; in afs_fs_fetch_acl()
2275 afs_use_fs_server(call, fc->cbi); in afs_fs_fetch_acl()
2276 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_fetch_acl()
2277 afs_make_call(&fc->ac, call, GFP_KERNEL); in afs_fs_fetch_acl()
2278 return (struct afs_acl *)afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_fetch_acl()
2285 static int afs_deliver_fs_file_status_and_vol(struct afs_call *call) in afs_deliver_fs_file_status_and_vol() argument
2290 ret = afs_transfer_reply(call); in afs_deliver_fs_file_status_and_vol()
2294 bp = call->buffer; in afs_deliver_fs_file_status_and_vol()
2295 xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_file_status_and_vol()
2296 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_file_status_and_vol()
2319 struct afs_call *call; in afs_fs_store_acl() local
2328 call = afs_alloc_flat_call(net, &afs_RXFSStoreACL, in afs_fs_store_acl()
2330 if (!call) { in afs_fs_store_acl()
2335 call->key = fc->key; in afs_fs_store_acl()
2336 call->out_scb = scb; in afs_fs_store_acl()
2337 call->out_volsync = NULL; in afs_fs_store_acl()
2340 bp = call->request; in afs_fs_store_acl()
2350 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_store_acl()
2351 afs_make_call(&fc->ac, call, GFP_KERNEL); in afs_fs_store_acl()
2352 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_store_acl()