• Home
  • Raw
  • Download

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()
132 return afs_protocol_error(call, -EBADMSG, afs_eproto_bad_status); in xdr_decode_AFSFetchStatus()
135 static time64_t xdr_decode_expiry(struct afs_call *call, u32 expiry) in xdr_decode_expiry() argument
137 return ktime_divns(call->reply_time, NSEC_PER_SEC) + expiry; in xdr_decode_expiry()
141 struct afs_call *call, in xdr_decode_AFSCallBack() argument
148 cb->expires_at = xdr_decode_expiry(call, ntohl(*bp++)); in xdr_decode_AFSCallBack()
241 static int afs_deliver_fs_fetch_status_vnode(struct afs_call *call) in afs_deliver_fs_fetch_status_vnode() argument
246 ret = afs_transfer_reply(call); in afs_deliver_fs_fetch_status_vnode()
251 bp = call->buffer; in afs_deliver_fs_fetch_status_vnode()
252 ret = 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()
395 afs_extract_discard(call, req->actual_len - req->len); in afs_deliver_fs_fetch_data()
396 call->unmarshall = 3; in afs_deliver_fs_fetch_data()
401 iov_iter_count(&call->iter), req->actual_len - req->len); in afs_deliver_fs_fetch_data()
403 ret = afs_extract_data(call, true); in afs_deliver_fs_fetch_data()
408 call->unmarshall = 4; in afs_deliver_fs_fetch_data()
409 afs_extract_to_buf(call, (21 + 3 + 6) * 4); in afs_deliver_fs_fetch_data()
414 ret = afs_extract_data(call, false); in afs_deliver_fs_fetch_data()
418 bp = call->buffer; in afs_deliver_fs_fetch_data()
419 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_fetch_data()
422 xdr_decode_AFSCallBack(&bp, call, call->out_scb); in afs_deliver_fs_fetch_data()
423 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_fetch_data()
425 req->data_version = call->out_scb->status.data_version; in afs_deliver_fs_fetch_data()
426 req->file_size = call->out_scb->status.size; in afs_deliver_fs_fetch_data()
428 call->unmarshall++; in afs_deliver_fs_fetch_data()
447 static void afs_fetch_data_destructor(struct afs_call *call) in afs_fetch_data_destructor() argument
449 struct afs_read *req = call->read_request; in afs_fetch_data_destructor()
452 afs_flat_call_destructor(call); in afs_fetch_data_destructor()
480 struct afs_call *call; in afs_fs_fetch_data64() local
486 call = afs_alloc_flat_call(net, &afs_RXFSFetchData64, 32, (21 + 3 + 6) * 4); in afs_fs_fetch_data64()
487 if (!call) in afs_fs_fetch_data64()
490 call->key = fc->key; in afs_fs_fetch_data64()
491 call->out_scb = scb; in afs_fs_fetch_data64()
492 call->out_volsync = NULL; in afs_fs_fetch_data64()
493 call->read_request = req; in afs_fs_fetch_data64()
496 bp = call->request; in afs_fs_fetch_data64()
507 afs_use_fs_server(call, fc->cbi); in afs_fs_fetch_data64()
508 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_fetch_data64()
509 afs_set_fc_call(call, fc); in afs_fs_fetch_data64()
510 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_fetch_data64()
511 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_fetch_data64()
522 struct afs_call *call; in afs_fs_fetch_data() local
536 call = afs_alloc_flat_call(net, &afs_RXFSFetchData, 24, (21 + 3 + 6) * 4); in afs_fs_fetch_data()
537 if (!call) in afs_fs_fetch_data()
540 call->key = fc->key; in afs_fs_fetch_data()
541 call->out_scb = scb; in afs_fs_fetch_data()
542 call->out_volsync = NULL; in afs_fs_fetch_data()
543 call->read_request = req; in afs_fs_fetch_data()
546 bp = call->request; in afs_fs_fetch_data()
555 afs_use_fs_server(call, fc->cbi); in afs_fs_fetch_data()
556 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_fetch_data()
557 afs_set_fc_call(call, fc); in afs_fs_fetch_data()
558 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_fetch_data()
559 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_fetch_data()
565 static int afs_deliver_fs_create_vnode(struct afs_call *call) in afs_deliver_fs_create_vnode() argument
570 ret = afs_transfer_reply(call); in afs_deliver_fs_create_vnode()
575 bp = call->buffer; in afs_deliver_fs_create_vnode()
576 xdr_decode_AFSFid(&bp, call->out_fid); in afs_deliver_fs_create_vnode()
577 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_create_vnode()
580 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_create_vnode()
583 xdr_decode_AFSCallBack(&bp, call, call->out_scb); in afs_deliver_fs_create_vnode()
584 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_create_vnode()
618 struct afs_call *call; in afs_fs_create() local
638 call = afs_alloc_flat_call( in afs_fs_create()
641 if (!call) in afs_fs_create()
644 call->key = fc->key; in afs_fs_create()
645 call->out_dir_scb = dvnode_scb; in afs_fs_create()
646 call->out_fid = newfid; in afs_fs_create()
647 call->out_scb = new_scb; in afs_fs_create()
650 bp = call->request; in afs_fs_create()
669 afs_use_fs_server(call, fc->cbi); in afs_fs_create()
670 trace_afs_make_fs_call1(call, &dvnode->fid, name); in afs_fs_create()
671 afs_set_fc_call(call, fc); in afs_fs_create()
672 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_create()
673 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_create()
680 static int afs_deliver_fs_dir_status_and_vol(struct afs_call *call) in afs_deliver_fs_dir_status_and_vol() argument
685 ret = afs_transfer_reply(call); in afs_deliver_fs_dir_status_and_vol()
690 bp = call->buffer; in afs_deliver_fs_dir_status_and_vol()
691 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_dir_status_and_vol()
694 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_dir_status_and_vol()
724 struct afs_call *call; in afs_fs_remove() local
738 call = afs_alloc_flat_call( in afs_fs_remove()
741 if (!call) in afs_fs_remove()
744 call->key = fc->key; in afs_fs_remove()
745 call->out_dir_scb = dvnode_scb; in afs_fs_remove()
748 bp = call->request; in afs_fs_remove()
761 afs_use_fs_server(call, fc->cbi); in afs_fs_remove()
762 trace_afs_make_fs_call1(call, &dvnode->fid, name); in afs_fs_remove()
763 afs_set_fc_call(call, fc); in afs_fs_remove()
764 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_remove()
765 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_remove()
771 static int afs_deliver_fs_link(struct afs_call *call) in afs_deliver_fs_link() argument
776 _enter("{%u}", call->unmarshall); in afs_deliver_fs_link()
778 ret = afs_transfer_reply(call); in afs_deliver_fs_link()
783 bp = call->buffer; in afs_deliver_fs_link()
784 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_link()
787 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_link()
790 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_link()
815 struct afs_call *call; in afs_fs_link() local
829 call = afs_alloc_flat_call(net, &afs_RXFSLink, reqsz, (21 + 21 + 6) * 4); in afs_fs_link()
830 if (!call) in afs_fs_link()
833 call->key = fc->key; in afs_fs_link()
834 call->out_dir_scb = dvnode_scb; in afs_fs_link()
835 call->out_scb = vnode_scb; in afs_fs_link()
838 bp = call->request; in afs_fs_link()
854 afs_use_fs_server(call, fc->cbi); in afs_fs_link()
855 trace_afs_make_fs_call1(call, &vnode->fid, name); in afs_fs_link()
856 afs_set_fc_call(call, fc); in afs_fs_link()
857 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_link()
858 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_link()
864 static int afs_deliver_fs_symlink(struct afs_call *call) in afs_deliver_fs_symlink() argument
869 _enter("{%u}", call->unmarshall); in afs_deliver_fs_symlink()
871 ret = afs_transfer_reply(call); in afs_deliver_fs_symlink()
876 bp = call->buffer; in afs_deliver_fs_symlink()
877 xdr_decode_AFSFid(&bp, call->out_fid); in afs_deliver_fs_symlink()
878 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_symlink()
881 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_symlink()
884 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_symlink()
911 struct afs_call *call; in afs_fs_symlink() local
930 call = afs_alloc_flat_call(net, &afs_RXFSSymlink, reqsz, in afs_fs_symlink()
932 if (!call) in afs_fs_symlink()
935 call->key = fc->key; in afs_fs_symlink()
936 call->out_dir_scb = dvnode_scb; in afs_fs_symlink()
937 call->out_fid = newfid; in afs_fs_symlink()
938 call->out_scb = new_scb; in afs_fs_symlink()
941 bp = call->request; in afs_fs_symlink()
967 afs_use_fs_server(call, fc->cbi); in afs_fs_symlink()
968 trace_afs_make_fs_call1(call, &dvnode->fid, name); in afs_fs_symlink()
969 afs_set_fc_call(call, fc); in afs_fs_symlink()
970 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_symlink()
971 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_symlink()
977 static int afs_deliver_fs_rename(struct afs_call *call) in afs_deliver_fs_rename() argument
982 ret = afs_transfer_reply(call); in afs_deliver_fs_rename()
987 bp = call->buffer; in afs_deliver_fs_rename()
988 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); in afs_deliver_fs_rename()
991 if (call->out_dir_scb != call->out_scb) { in afs_deliver_fs_rename()
992 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_rename()
996 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_rename()
1023 struct afs_call *call; in afs_fs_rename() local
1047 call = afs_alloc_flat_call(net, &afs_RXFSRename, reqsz, (21 + 21 + 6) * 4); in afs_fs_rename()
1048 if (!call) in afs_fs_rename()
1051 call->key = fc->key; in afs_fs_rename()
1052 call->out_dir_scb = orig_dvnode_scb; in afs_fs_rename()
1053 call->out_scb = new_dvnode_scb; in afs_fs_rename()
1056 bp = call->request; in afs_fs_rename()
1080 afs_use_fs_server(call, fc->cbi); in afs_fs_rename()
1081 trace_afs_make_fs_call2(call, &orig_dvnode->fid, orig_name, new_name); in afs_fs_rename()
1082 afs_set_fc_call(call, fc); in afs_fs_rename()
1083 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_rename()
1084 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_rename()
1090 static int afs_deliver_fs_store_data(struct afs_call *call) in afs_deliver_fs_store_data() argument
1097 ret = afs_transfer_reply(call); in afs_deliver_fs_store_data()
1102 bp = call->buffer; in afs_deliver_fs_store_data()
1103 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_store_data()
1106 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_store_data()
1140 struct afs_call *call; in afs_fs_store_data64() local
1147 call = afs_alloc_flat_call(net, &afs_RXFSStoreData64, in afs_fs_store_data64()
1150 if (!call) in afs_fs_store_data64()
1153 call->key = fc->key; in afs_fs_store_data64()
1154 call->mapping = mapping; in afs_fs_store_data64()
1155 call->first = first; in afs_fs_store_data64()
1156 call->last = last; in afs_fs_store_data64()
1157 call->first_offset = offset; in afs_fs_store_data64()
1158 call->last_to = to; in afs_fs_store_data64()
1159 call->send_pages = true; in afs_fs_store_data64()
1160 call->out_scb = scb; in afs_fs_store_data64()
1163 bp = call->request; in afs_fs_store_data64()
1183 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_store_data64()
1184 afs_set_fc_call(call, fc); in afs_fs_store_data64()
1185 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_store_data64()
1186 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_store_data64()
1198 struct afs_call *call; in afs_fs_store_data() local
1227 call = afs_alloc_flat_call(net, &afs_RXFSStoreData, in afs_fs_store_data()
1230 if (!call) in afs_fs_store_data()
1233 call->key = fc->key; in afs_fs_store_data()
1234 call->mapping = mapping; in afs_fs_store_data()
1235 call->first = first; in afs_fs_store_data()
1236 call->last = last; in afs_fs_store_data()
1237 call->first_offset = offset; in afs_fs_store_data()
1238 call->last_to = to; in afs_fs_store_data()
1239 call->send_pages = true; in afs_fs_store_data()
1240 call->out_scb = scb; in afs_fs_store_data()
1243 bp = call->request; in afs_fs_store_data()
1260 afs_use_fs_server(call, fc->cbi); in afs_fs_store_data()
1261 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_store_data()
1262 afs_set_fc_call(call, fc); in afs_fs_store_data()
1263 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_store_data()
1264 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_store_data()
1270 static int afs_deliver_fs_store_status(struct afs_call *call) in afs_deliver_fs_store_status() argument
1277 ret = afs_transfer_reply(call); in afs_deliver_fs_store_status()
1282 bp = call->buffer; in afs_deliver_fs_store_status()
1283 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_store_status()
1286 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_store_status()
1324 struct afs_call *call; in afs_fs_setattr_size64() local
1333 call = afs_alloc_flat_call(net, &afs_RXFSStoreData64_as_Status, in afs_fs_setattr_size64()
1336 if (!call) in afs_fs_setattr_size64()
1339 call->key = fc->key; in afs_fs_setattr_size64()
1340 call->out_scb = scb; in afs_fs_setattr_size64()
1343 bp = call->request; in afs_fs_setattr_size64()
1358 afs_use_fs_server(call, fc->cbi); in afs_fs_setattr_size64()
1359 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_setattr_size64()
1360 afs_set_fc_call(call, fc); in afs_fs_setattr_size64()
1361 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_setattr_size64()
1362 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_setattr_size64()
1373 struct afs_call *call; in afs_fs_setattr_size() local
1384 call = afs_alloc_flat_call(net, &afs_RXFSStoreData_as_Status, in afs_fs_setattr_size()
1387 if (!call) in afs_fs_setattr_size()
1390 call->key = fc->key; in afs_fs_setattr_size()
1391 call->out_scb = scb; in afs_fs_setattr_size()
1394 bp = call->request; in afs_fs_setattr_size()
1406 afs_use_fs_server(call, fc->cbi); in afs_fs_setattr_size()
1407 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_setattr_size()
1408 afs_set_fc_call(call, fc); in afs_fs_setattr_size()
1409 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_setattr_size()
1410 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_setattr_size()
1421 struct afs_call *call; in afs_fs_setattr() local
1434 call = afs_alloc_flat_call(net, &afs_RXFSStoreStatus, in afs_fs_setattr()
1437 if (!call) in afs_fs_setattr()
1440 call->key = fc->key; in afs_fs_setattr()
1441 call->out_scb = scb; in afs_fs_setattr()
1444 bp = call->request; in afs_fs_setattr()
1452 afs_use_fs_server(call, fc->cbi); in afs_fs_setattr()
1453 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_setattr()
1454 afs_set_fc_call(call, fc); in afs_fs_setattr()
1455 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_setattr()
1456 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_setattr()
1462 static int afs_deliver_fs_get_volume_status(struct afs_call *call) in afs_deliver_fs_get_volume_status() argument
1469 _enter("{%u}", call->unmarshall); in afs_deliver_fs_get_volume_status()
1471 switch (call->unmarshall) { in afs_deliver_fs_get_volume_status()
1473 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1474 afs_extract_to_buf(call, 12 * 4); in afs_deliver_fs_get_volume_status()
1480 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1484 bp = call->buffer; in afs_deliver_fs_get_volume_status()
1485 xdr_decode_AFSFetchVolumeStatus(&bp, call->out_volstatus); in afs_deliver_fs_get_volume_status()
1486 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1487 afs_extract_to_tmp(call); in afs_deliver_fs_get_volume_status()
1492 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1496 call->count = ntohl(call->tmp); in afs_deliver_fs_get_volume_status()
1497 _debug("volname length: %u", call->count); in afs_deliver_fs_get_volume_status()
1498 if (call->count >= AFSNAMEMAX) in afs_deliver_fs_get_volume_status()
1499 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_get_volume_status()
1501 size = (call->count + 3) & ~3; /* It's padded */ in afs_deliver_fs_get_volume_status()
1502 afs_extract_to_buf(call, size); in afs_deliver_fs_get_volume_status()
1503 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1509 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1513 p = call->buffer; in afs_deliver_fs_get_volume_status()
1514 p[call->count] = 0; in afs_deliver_fs_get_volume_status()
1516 afs_extract_to_tmp(call); in afs_deliver_fs_get_volume_status()
1517 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1522 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1526 call->count = ntohl(call->tmp); in afs_deliver_fs_get_volume_status()
1527 _debug("offline msg length: %u", call->count); in afs_deliver_fs_get_volume_status()
1528 if (call->count >= AFSNAMEMAX) in afs_deliver_fs_get_volume_status()
1529 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_get_volume_status()
1531 size = (call->count + 3) & ~3; /* It's padded */ in afs_deliver_fs_get_volume_status()
1532 afs_extract_to_buf(call, size); in afs_deliver_fs_get_volume_status()
1533 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1539 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1543 p = call->buffer; in afs_deliver_fs_get_volume_status()
1544 p[call->count] = 0; in afs_deliver_fs_get_volume_status()
1547 afs_extract_to_tmp(call); in afs_deliver_fs_get_volume_status()
1548 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1553 ret = afs_extract_data(call, true); in afs_deliver_fs_get_volume_status()
1557 call->count = ntohl(call->tmp); in afs_deliver_fs_get_volume_status()
1558 _debug("motd length: %u", call->count); in afs_deliver_fs_get_volume_status()
1559 if (call->count >= AFSNAMEMAX) in afs_deliver_fs_get_volume_status()
1560 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_get_volume_status()
1562 size = (call->count + 3) & ~3; /* It's padded */ in afs_deliver_fs_get_volume_status()
1563 afs_extract_to_buf(call, size); in afs_deliver_fs_get_volume_status()
1564 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1570 ret = afs_extract_data(call, false); in afs_deliver_fs_get_volume_status()
1574 p = call->buffer; in afs_deliver_fs_get_volume_status()
1575 p[call->count] = 0; in afs_deliver_fs_get_volume_status()
1578 call->unmarshall++; in afs_deliver_fs_get_volume_status()
1605 struct afs_call *call; in afs_fs_get_volume_status() local
1614 call = afs_alloc_flat_call(net, &afs_RXFSGetVolumeStatus, 2 * 4, in afs_fs_get_volume_status()
1616 if (!call) in afs_fs_get_volume_status()
1619 call->key = fc->key; in afs_fs_get_volume_status()
1620 call->out_volstatus = vs; in afs_fs_get_volume_status()
1623 bp = call->request; in afs_fs_get_volume_status()
1627 afs_use_fs_server(call, fc->cbi); in afs_fs_get_volume_status()
1628 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_get_volume_status()
1629 afs_set_fc_call(call, fc); in afs_fs_get_volume_status()
1630 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_get_volume_status()
1631 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_get_volume_status()
1637 static int afs_deliver_fs_xxxx_lock(struct afs_call *call) in afs_deliver_fs_xxxx_lock() argument
1642 _enter("{%u}", call->unmarshall); in afs_deliver_fs_xxxx_lock()
1644 ret = afs_transfer_reply(call); in afs_deliver_fs_xxxx_lock()
1649 bp = call->buffer; in afs_deliver_fs_xxxx_lock()
1650 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_xxxx_lock()
1695 struct afs_call *call; in afs_fs_set_lock() local
1704 call = afs_alloc_flat_call(net, &afs_RXFSSetLock, 5 * 4, 6 * 4); in afs_fs_set_lock()
1705 if (!call) in afs_fs_set_lock()
1708 call->key = fc->key; in afs_fs_set_lock()
1709 call->lvnode = vnode; in afs_fs_set_lock()
1710 call->out_scb = scb; in afs_fs_set_lock()
1713 bp = call->request; in afs_fs_set_lock()
1720 afs_use_fs_server(call, fc->cbi); in afs_fs_set_lock()
1721 trace_afs_make_fs_calli(call, &vnode->fid, type); in afs_fs_set_lock()
1722 afs_set_fc_call(call, fc); in afs_fs_set_lock()
1723 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_set_lock()
1724 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_set_lock()
1733 struct afs_call *call; in afs_fs_extend_lock() local
1742 call = afs_alloc_flat_call(net, &afs_RXFSExtendLock, 4 * 4, 6 * 4); in afs_fs_extend_lock()
1743 if (!call) in afs_fs_extend_lock()
1746 call->key = fc->key; in afs_fs_extend_lock()
1747 call->lvnode = vnode; in afs_fs_extend_lock()
1748 call->out_scb = scb; in afs_fs_extend_lock()
1751 bp = call->request; in afs_fs_extend_lock()
1757 afs_use_fs_server(call, fc->cbi); in afs_fs_extend_lock()
1758 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_extend_lock()
1759 afs_set_fc_call(call, fc); in afs_fs_extend_lock()
1760 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_extend_lock()
1761 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_extend_lock()
1770 struct afs_call *call; in afs_fs_release_lock() local
1779 call = afs_alloc_flat_call(net, &afs_RXFSReleaseLock, 4 * 4, 6 * 4); in afs_fs_release_lock()
1780 if (!call) in afs_fs_release_lock()
1783 call->key = fc->key; in afs_fs_release_lock()
1784 call->lvnode = vnode; in afs_fs_release_lock()
1785 call->out_scb = scb; in afs_fs_release_lock()
1788 bp = call->request; in afs_fs_release_lock()
1794 afs_use_fs_server(call, fc->cbi); in afs_fs_release_lock()
1795 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_release_lock()
1796 afs_set_fc_call(call, fc); in afs_fs_release_lock()
1797 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_release_lock()
1798 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_release_lock()
1804 static int afs_deliver_fs_give_up_all_callbacks(struct afs_call *call) in afs_deliver_fs_give_up_all_callbacks() argument
1806 return afs_transfer_reply(call); in afs_deliver_fs_give_up_all_callbacks()
1827 struct afs_call *call; in afs_fs_give_up_all_callbacks() local
1832 call = afs_alloc_flat_call(net, &afs_RXFSGiveUpAllCallBacks, 1 * 4, 0); in afs_fs_give_up_all_callbacks()
1833 if (!call) in afs_fs_give_up_all_callbacks()
1836 call->key = key; in afs_fs_give_up_all_callbacks()
1839 bp = call->request; in afs_fs_give_up_all_callbacks()
1843 afs_make_call(ac, call, GFP_NOFS); in afs_fs_give_up_all_callbacks()
1844 return afs_wait_for_call_to_complete(call, ac); in afs_fs_give_up_all_callbacks()
1850 static int afs_deliver_fs_get_capabilities(struct afs_call *call) in afs_deliver_fs_get_capabilities() argument
1855 _enter("{%u,%zu}", call->unmarshall, iov_iter_count(&call->iter)); in afs_deliver_fs_get_capabilities()
1857 switch (call->unmarshall) { in afs_deliver_fs_get_capabilities()
1859 afs_extract_to_tmp(call); in afs_deliver_fs_get_capabilities()
1860 call->unmarshall++; in afs_deliver_fs_get_capabilities()
1865 ret = afs_extract_data(call, true); in afs_deliver_fs_get_capabilities()
1869 count = ntohl(call->tmp); in afs_deliver_fs_get_capabilities()
1871 call->count = count; in afs_deliver_fs_get_capabilities()
1872 call->count2 = count; in afs_deliver_fs_get_capabilities()
1873 afs_extract_discard(call, count * sizeof(__be32)); in afs_deliver_fs_get_capabilities()
1874 call->unmarshall++; in afs_deliver_fs_get_capabilities()
1879 ret = afs_extract_data(call, false); in afs_deliver_fs_get_capabilities()
1885 call->unmarshall++; in afs_deliver_fs_get_capabilities()
1914 struct afs_call *call; in afs_fs_get_capabilities() local
1919 call = afs_alloc_flat_call(net, &afs_RXFSGetCapabilities, 1 * 4, 16 * 4); in afs_fs_get_capabilities()
1920 if (!call) in afs_fs_get_capabilities()
1923 call->key = key; in afs_fs_get_capabilities()
1924 call->server = afs_get_server(server, afs_server_trace_get_caps); in afs_fs_get_capabilities()
1925 call->server_index = server_index; in afs_fs_get_capabilities()
1926 call->upgrade = true; in afs_fs_get_capabilities()
1927 call->async = true; in afs_fs_get_capabilities()
1928 call->max_lifespan = AFS_PROBE_MAX_LIFESPAN; in afs_fs_get_capabilities()
1931 bp = call->request; in afs_fs_get_capabilities()
1935 trace_afs_make_fs_call(call, NULL); in afs_fs_get_capabilities()
1936 afs_make_call(ac, call, GFP_NOFS); in afs_fs_get_capabilities()
1937 return call; in afs_fs_get_capabilities()
1943 static int afs_deliver_fs_fetch_status(struct afs_call *call) in afs_deliver_fs_fetch_status() argument
1948 ret = afs_transfer_reply(call); in afs_deliver_fs_fetch_status()
1953 bp = call->buffer; in afs_deliver_fs_fetch_status()
1954 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_fetch_status()
1957 xdr_decode_AFSCallBack(&bp, call, call->out_scb); in afs_deliver_fs_fetch_status()
1958 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_fetch_status()
1983 struct afs_call *call; in afs_fs_fetch_status() local
1992 call = afs_alloc_flat_call(net, &afs_RXFSFetchStatus, 16, (21 + 3 + 6) * 4); in afs_fs_fetch_status()
1993 if (!call) { in afs_fs_fetch_status()
1998 call->key = fc->key; in afs_fs_fetch_status()
1999 call->out_fid = fid; in afs_fs_fetch_status()
2000 call->out_scb = scb; in afs_fs_fetch_status()
2001 call->out_volsync = volsync; in afs_fs_fetch_status()
2004 bp = call->request; in afs_fs_fetch_status()
2010 afs_use_fs_server(call, fc->cbi); in afs_fs_fetch_status()
2011 trace_afs_make_fs_call(call, fid); in afs_fs_fetch_status()
2012 afs_set_fc_call(call, fc); in afs_fs_fetch_status()
2013 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_fetch_status()
2014 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_fetch_status()
2020 static int afs_deliver_fs_inline_bulk_status(struct afs_call *call) in afs_deliver_fs_inline_bulk_status() argument
2027 _enter("{%u}", call->unmarshall); in afs_deliver_fs_inline_bulk_status()
2029 switch (call->unmarshall) { in afs_deliver_fs_inline_bulk_status()
2031 afs_extract_to_tmp(call); in afs_deliver_fs_inline_bulk_status()
2032 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2038 ret = afs_extract_data(call, true); in afs_deliver_fs_inline_bulk_status()
2042 tmp = ntohl(call->tmp); in afs_deliver_fs_inline_bulk_status()
2043 _debug("status count: %u/%u", tmp, call->count2); in afs_deliver_fs_inline_bulk_status()
2044 if (tmp != call->count2) in afs_deliver_fs_inline_bulk_status()
2045 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_inline_bulk_status()
2048 call->count = 0; in afs_deliver_fs_inline_bulk_status()
2049 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2051 afs_extract_to_buf(call, 21 * sizeof(__be32)); in afs_deliver_fs_inline_bulk_status()
2055 _debug("extract status array %u", call->count); in afs_deliver_fs_inline_bulk_status()
2056 ret = afs_extract_data(call, true); in afs_deliver_fs_inline_bulk_status()
2060 bp = call->buffer; in afs_deliver_fs_inline_bulk_status()
2061 scb = &call->out_scb[call->count]; in afs_deliver_fs_inline_bulk_status()
2062 ret = xdr_decode_AFSFetchStatus(&bp, call, scb); in afs_deliver_fs_inline_bulk_status()
2066 call->count++; in afs_deliver_fs_inline_bulk_status()
2067 if (call->count < call->count2) in afs_deliver_fs_inline_bulk_status()
2070 call->count = 0; in afs_deliver_fs_inline_bulk_status()
2071 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2072 afs_extract_to_tmp(call); in afs_deliver_fs_inline_bulk_status()
2078 ret = afs_extract_data(call, true); in afs_deliver_fs_inline_bulk_status()
2082 tmp = ntohl(call->tmp); in afs_deliver_fs_inline_bulk_status()
2084 if (tmp != call->count2) in afs_deliver_fs_inline_bulk_status()
2085 return afs_protocol_error(call, -EBADMSG, in afs_deliver_fs_inline_bulk_status()
2087 call->count = 0; in afs_deliver_fs_inline_bulk_status()
2088 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2090 afs_extract_to_buf(call, 3 * sizeof(__be32)); in afs_deliver_fs_inline_bulk_status()
2095 ret = afs_extract_data(call, true); in afs_deliver_fs_inline_bulk_status()
2100 bp = call->buffer; in afs_deliver_fs_inline_bulk_status()
2101 scb = &call->out_scb[call->count]; in afs_deliver_fs_inline_bulk_status()
2102 xdr_decode_AFSCallBack(&bp, call, scb); in afs_deliver_fs_inline_bulk_status()
2103 call->count++; in afs_deliver_fs_inline_bulk_status()
2104 if (call->count < call->count2) in afs_deliver_fs_inline_bulk_status()
2107 afs_extract_to_buf(call, 6 * sizeof(__be32)); in afs_deliver_fs_inline_bulk_status()
2108 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2112 ret = afs_extract_data(call, false); in afs_deliver_fs_inline_bulk_status()
2116 bp = call->buffer; in afs_deliver_fs_inline_bulk_status()
2117 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_inline_bulk_status()
2119 call->unmarshall++; in afs_deliver_fs_inline_bulk_status()
2149 struct afs_call *call; in afs_fs_inline_bulk_status() local
2160 call = afs_alloc_flat_call(net, &afs_RXFSInlineBulkStatus, in afs_fs_inline_bulk_status()
2163 if (!call) { in afs_fs_inline_bulk_status()
2168 call->key = fc->key; in afs_fs_inline_bulk_status()
2169 call->out_scb = statuses; in afs_fs_inline_bulk_status()
2170 call->out_volsync = volsync; in afs_fs_inline_bulk_status()
2171 call->count2 = nr_fids; in afs_fs_inline_bulk_status()
2174 bp = call->request; in afs_fs_inline_bulk_status()
2183 afs_use_fs_server(call, fc->cbi); in afs_fs_inline_bulk_status()
2184 trace_afs_make_fs_call(call, &fids[0]); in afs_fs_inline_bulk_status()
2185 afs_set_fc_call(call, fc); in afs_fs_inline_bulk_status()
2186 afs_make_call(&fc->ac, call, GFP_NOFS); in afs_fs_inline_bulk_status()
2187 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_inline_bulk_status()
2193 static int afs_deliver_fs_fetch_acl(struct afs_call *call) in afs_deliver_fs_fetch_acl() argument
2200 _enter("{%u}", call->unmarshall); in afs_deliver_fs_fetch_acl()
2202 switch (call->unmarshall) { in afs_deliver_fs_fetch_acl()
2204 afs_extract_to_tmp(call); in afs_deliver_fs_fetch_acl()
2205 call->unmarshall++; in afs_deliver_fs_fetch_acl()
2210 ret = afs_extract_data(call, true); in afs_deliver_fs_fetch_acl()
2214 size = call->count2 = ntohl(call->tmp); in afs_deliver_fs_fetch_acl()
2220 call->ret_acl = acl; in afs_deliver_fs_fetch_acl()
2221 acl->size = call->count2; in afs_deliver_fs_fetch_acl()
2222 afs_extract_begin(call, acl->data, size); in afs_deliver_fs_fetch_acl()
2223 call->unmarshall++; in afs_deliver_fs_fetch_acl()
2228 ret = afs_extract_data(call, true); in afs_deliver_fs_fetch_acl()
2232 afs_extract_to_buf(call, (21 + 6) * 4); in afs_deliver_fs_fetch_acl()
2233 call->unmarshall++; in afs_deliver_fs_fetch_acl()
2238 ret = afs_extract_data(call, false); in afs_deliver_fs_fetch_acl()
2242 bp = call->buffer; in afs_deliver_fs_fetch_acl()
2243 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_fetch_acl()
2246 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_fetch_acl()
2248 call->unmarshall++; in afs_deliver_fs_fetch_acl()
2258 static void afs_destroy_fs_fetch_acl(struct afs_call *call) in afs_destroy_fs_fetch_acl() argument
2260 kfree(call->ret_acl); in afs_destroy_fs_fetch_acl()
2261 afs_flat_call_destructor(call); in afs_destroy_fs_fetch_acl()
2281 struct afs_call *call; in afs_fs_fetch_acl() local
2288 call = afs_alloc_flat_call(net, &afs_RXFSFetchACL, 16, (21 + 6) * 4); in afs_fs_fetch_acl()
2289 if (!call) { in afs_fs_fetch_acl()
2294 call->key = fc->key; in afs_fs_fetch_acl()
2295 call->ret_acl = NULL; in afs_fs_fetch_acl()
2296 call->out_scb = scb; in afs_fs_fetch_acl()
2297 call->out_volsync = NULL; in afs_fs_fetch_acl()
2300 bp = call->request; in afs_fs_fetch_acl()
2306 afs_use_fs_server(call, fc->cbi); in afs_fs_fetch_acl()
2307 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_fetch_acl()
2308 afs_make_call(&fc->ac, call, GFP_KERNEL); in afs_fs_fetch_acl()
2309 return (struct afs_acl *)afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_fetch_acl()
2316 static int afs_deliver_fs_file_status_and_vol(struct afs_call *call) in afs_deliver_fs_file_status_and_vol() argument
2321 ret = afs_transfer_reply(call); in afs_deliver_fs_file_status_and_vol()
2325 bp = call->buffer; in afs_deliver_fs_file_status_and_vol()
2326 ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); in afs_deliver_fs_file_status_and_vol()
2329 xdr_decode_AFSVolSync(&bp, call->out_volsync); in afs_deliver_fs_file_status_and_vol()
2352 struct afs_call *call; in afs_fs_store_acl() local
2361 call = afs_alloc_flat_call(net, &afs_RXFSStoreACL, in afs_fs_store_acl()
2363 if (!call) { in afs_fs_store_acl()
2368 call->key = fc->key; in afs_fs_store_acl()
2369 call->out_scb = scb; in afs_fs_store_acl()
2370 call->out_volsync = NULL; in afs_fs_store_acl()
2373 bp = call->request; in afs_fs_store_acl()
2383 trace_afs_make_fs_call(call, &vnode->fid); in afs_fs_store_acl()
2384 afs_make_call(&fc->ac, call, GFP_KERNEL); in afs_fs_store_acl()
2385 return afs_wait_for_call_to_complete(call, &fc->ac); in afs_fs_store_acl()