Lines Matching full:call
20 static inline void afs_use_fs_server(struct afs_call *call, struct afs_cb_interest *cbi) in afs_use_fs_server() argument
22 call->cbi = afs_get_cb_interest(cbi); in afs_use_fs_server()
147 static void yfs_check_req(struct afs_call *call, __be32 *bp) in yfs_check_req() argument
149 size_t len = (void *)bp - call->request; in yfs_check_req()
151 if (len > call->request_size) in yfs_check_req()
153 call->type->name, len, call->request_size); in yfs_check_req()
154 else if (len < call->request_size) in yfs_check_req()
156 call->type->name, len, call->request_size); in yfs_check_req()
183 struct afs_call *call, in xdr_decode_YFSFetchStatus() argument
229 return afs_protocol_error(call, -EBADMSG, afs_eproto_bad_status); in xdr_decode_YFSFetchStatus()
236 struct afs_call *call, in xdr_decode_YFSCallBack() argument
243 cb_expiry = call->reply_time; in xdr_decode_YFSCallBack()
336 static int yfs_deliver_fs_status_cb_and_volsync(struct afs_call *call) in yfs_deliver_fs_status_cb_and_volsync() argument
341 ret = afs_transfer_reply(call); in yfs_deliver_fs_status_cb_and_volsync()
346 bp = call->buffer; in yfs_deliver_fs_status_cb_and_volsync()
347 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); in yfs_deliver_fs_status_cb_and_volsync()
350 xdr_decode_YFSCallBack(&bp, call, call->out_scb); in yfs_deliver_fs_status_cb_and_volsync()
351 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_status_cb_and_volsync()
361 static int yfs_deliver_status_and_volsync(struct afs_call *call) in yfs_deliver_status_and_volsync() argument
366 ret = afs_transfer_reply(call); in yfs_deliver_status_and_volsync()
370 bp = call->buffer; in yfs_deliver_status_and_volsync()
371 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); in yfs_deliver_status_and_volsync()
374 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_status_and_volsync()
397 struct afs_call *call; in yfs_fs_fetch_file_status() local
404 call = afs_alloc_flat_call(net, &yfs_RXYFSFetchStatus_vnode, in yfs_fs_fetch_file_status()
410 if (!call) { in yfs_fs_fetch_file_status()
415 call->key = fc->key; in yfs_fs_fetch_file_status()
416 call->out_scb = scb; in yfs_fs_fetch_file_status()
417 call->out_volsync = volsync; in yfs_fs_fetch_file_status()
420 bp = call->request; in yfs_fs_fetch_file_status()
424 yfs_check_req(call, bp); in yfs_fs_fetch_file_status()
426 afs_use_fs_server(call, fc->cbi); in yfs_fs_fetch_file_status()
427 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_fetch_file_status()
428 afs_set_fc_call(call, fc); in yfs_fs_fetch_file_status()
429 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_fetch_file_status()
430 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_fetch_file_status()
436 static int yfs_deliver_fs_fetch_data64(struct afs_call *call) in yfs_deliver_fs_fetch_data64() argument
438 struct afs_read *req = call->read_request; in yfs_deliver_fs_fetch_data64()
444 call->unmarshall, iov_iter_count(&call->iter), req->actual_len); in yfs_deliver_fs_fetch_data64()
446 switch (call->unmarshall) { in yfs_deliver_fs_fetch_data64()
451 afs_extract_to_tmp64(call); in yfs_deliver_fs_fetch_data64()
452 call->unmarshall++; in yfs_deliver_fs_fetch_data64()
458 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_data64()
462 req->actual_len = be64_to_cpu(call->tmp64); in yfs_deliver_fs_fetch_data64()
468 call->unmarshall++; in yfs_deliver_fs_fetch_data64()
476 call->bvec[0].bv_len = size; in yfs_deliver_fs_fetch_data64()
477 call->bvec[0].bv_offset = req->offset; in yfs_deliver_fs_fetch_data64()
478 call->bvec[0].bv_page = req->pages[req->index]; in yfs_deliver_fs_fetch_data64()
479 iov_iter_bvec(&call->iter, READ, call->bvec, 1, size); in yfs_deliver_fs_fetch_data64()
486 iov_iter_count(&call->iter), req->remain); in yfs_deliver_fs_fetch_data64()
488 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_data64()
491 req->remain -= call->bvec[0].bv_len; in yfs_deliver_fs_fetch_data64()
492 req->offset += call->bvec[0].bv_len; in yfs_deliver_fs_fetch_data64()
508 afs_extract_discard(call, req->actual_len - req->len); in yfs_deliver_fs_fetch_data64()
509 call->unmarshall = 3; in yfs_deliver_fs_fetch_data64()
514 iov_iter_count(&call->iter), req->actual_len - req->len); in yfs_deliver_fs_fetch_data64()
516 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_data64()
521 call->unmarshall = 4; in yfs_deliver_fs_fetch_data64()
522 afs_extract_to_buf(call, in yfs_deliver_fs_fetch_data64()
530 ret = afs_extract_data(call, false); in yfs_deliver_fs_fetch_data64()
534 bp = call->buffer; in yfs_deliver_fs_fetch_data64()
535 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); in yfs_deliver_fs_fetch_data64()
538 xdr_decode_YFSCallBack(&bp, call, call->out_scb); in yfs_deliver_fs_fetch_data64()
539 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_fetch_data64()
541 req->data_version = call->out_scb->status.data_version; in yfs_deliver_fs_fetch_data64()
542 req->file_size = call->out_scb->status.size; in yfs_deliver_fs_fetch_data64()
544 call->unmarshall++; in yfs_deliver_fs_fetch_data64()
564 static void yfs_fetch_data_destructor(struct afs_call *call) in yfs_fetch_data_destructor() argument
566 afs_put_read(call->read_request); in yfs_fetch_data_destructor()
567 afs_flat_call_destructor(call); in yfs_fetch_data_destructor()
587 struct afs_call *call; in yfs_fs_fetch_data() local
595 call = afs_alloc_flat_call(net, &yfs_RXYFSFetchData64, in yfs_fs_fetch_data()
602 if (!call) in yfs_fs_fetch_data()
605 call->key = fc->key; in yfs_fs_fetch_data()
606 call->out_scb = scb; in yfs_fs_fetch_data()
607 call->out_volsync = NULL; in yfs_fs_fetch_data()
608 call->read_request = req; in yfs_fs_fetch_data()
611 bp = call->request; in yfs_fs_fetch_data()
617 yfs_check_req(call, bp); in yfs_fs_fetch_data()
620 afs_use_fs_server(call, fc->cbi); in yfs_fs_fetch_data()
621 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_fetch_data()
622 afs_set_fc_call(call, fc); in yfs_fs_fetch_data()
623 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_fetch_data()
624 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_fetch_data()
630 static int yfs_deliver_fs_create_vnode(struct afs_call *call) in yfs_deliver_fs_create_vnode() argument
635 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_create_vnode()
637 ret = afs_transfer_reply(call); in yfs_deliver_fs_create_vnode()
642 bp = call->buffer; in yfs_deliver_fs_create_vnode()
643 xdr_decode_YFSFid(&bp, call->out_fid); in yfs_deliver_fs_create_vnode()
644 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); in yfs_deliver_fs_create_vnode()
647 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_dir_scb); in yfs_deliver_fs_create_vnode()
650 xdr_decode_YFSCallBack(&bp, call, call->out_scb); in yfs_deliver_fs_create_vnode()
651 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_create_vnode()
678 struct afs_call *call; in yfs_fs_create_file() local
698 call = afs_alloc_flat_call(net, &afs_RXFSCreateFile, reqsz, rplsz); in yfs_fs_create_file()
699 if (!call) in yfs_fs_create_file()
702 call->key = fc->key; in yfs_fs_create_file()
703 call->out_dir_scb = dvnode_scb; in yfs_fs_create_file()
704 call->out_fid = newfid; in yfs_fs_create_file()
705 call->out_scb = new_scb; in yfs_fs_create_file()
708 bp = call->request; in yfs_fs_create_file()
715 yfs_check_req(call, bp); in yfs_fs_create_file()
717 afs_use_fs_server(call, fc->cbi); in yfs_fs_create_file()
718 trace_afs_make_fs_call1(call, &dvnode->fid, name); in yfs_fs_create_file()
719 afs_set_fc_call(call, fc); in yfs_fs_create_file()
720 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_create_file()
721 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_create_file()
742 struct afs_call *call; in yfs_fs_make_dir() local
761 call = afs_alloc_flat_call(net, &yfs_RXFSMakeDir, reqsz, rplsz); in yfs_fs_make_dir()
762 if (!call) in yfs_fs_make_dir()
765 call->key = fc->key; in yfs_fs_make_dir()
766 call->out_dir_scb = dvnode_scb; in yfs_fs_make_dir()
767 call->out_fid = newfid; in yfs_fs_make_dir()
768 call->out_scb = new_scb; in yfs_fs_make_dir()
771 bp = call->request; in yfs_fs_make_dir()
777 yfs_check_req(call, bp); in yfs_fs_make_dir()
779 afs_use_fs_server(call, fc->cbi); in yfs_fs_make_dir()
780 trace_afs_make_fs_call1(call, &dvnode->fid, name); in yfs_fs_make_dir()
781 afs_set_fc_call(call, fc); in yfs_fs_make_dir()
782 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_make_dir()
783 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_make_dir()
789 static int yfs_deliver_fs_remove_file2(struct afs_call *call) in yfs_deliver_fs_remove_file2() argument
795 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_remove_file2()
797 ret = afs_transfer_reply(call); in yfs_deliver_fs_remove_file2()
801 bp = call->buffer; in yfs_deliver_fs_remove_file2()
802 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_dir_scb); in yfs_deliver_fs_remove_file2()
807 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); in yfs_deliver_fs_remove_file2()
812 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_remove_file2()
834 struct afs_call *call; in yfs_fs_remove_file2() local
843 call = afs_alloc_flat_call(net, &yfs_RXYFSRemoveFile2, in yfs_fs_remove_file2()
852 if (!call) in yfs_fs_remove_file2()
855 call->key = fc->key; in yfs_fs_remove_file2()
856 call->out_dir_scb = dvnode_scb; in yfs_fs_remove_file2()
857 call->out_scb = vnode_scb; in yfs_fs_remove_file2()
860 bp = call->request; in yfs_fs_remove_file2()
865 yfs_check_req(call, bp); in yfs_fs_remove_file2()
867 afs_use_fs_server(call, fc->cbi); in yfs_fs_remove_file2()
868 trace_afs_make_fs_call1(call, &dvnode->fid, name); in yfs_fs_remove_file2()
869 afs_set_fc_call(call, fc); in yfs_fs_remove_file2()
870 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_remove_file2()
871 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_remove_file2()
877 static int yfs_deliver_fs_remove(struct afs_call *call) in yfs_deliver_fs_remove() argument
882 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_remove()
884 ret = afs_transfer_reply(call); in yfs_deliver_fs_remove()
888 bp = call->buffer; in yfs_deliver_fs_remove()
889 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_dir_scb); in yfs_deliver_fs_remove()
893 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_remove()
922 struct afs_call *call; in yfs_fs_remove() local
930 call = afs_alloc_flat_call( in yfs_fs_remove()
938 if (!call) in yfs_fs_remove()
941 call->key = fc->key; in yfs_fs_remove()
942 call->out_dir_scb = dvnode_scb; in yfs_fs_remove()
945 bp = call->request; in yfs_fs_remove()
950 yfs_check_req(call, bp); in yfs_fs_remove()
952 afs_use_fs_server(call, fc->cbi); in yfs_fs_remove()
953 trace_afs_make_fs_call1(call, &dvnode->fid, name); in yfs_fs_remove()
954 afs_set_fc_call(call, fc); in yfs_fs_remove()
955 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_remove()
956 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_remove()
962 static int yfs_deliver_fs_link(struct afs_call *call) in yfs_deliver_fs_link() argument
967 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_link()
969 ret = afs_transfer_reply(call); in yfs_deliver_fs_link()
973 bp = call->buffer; in yfs_deliver_fs_link()
974 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); in yfs_deliver_fs_link()
977 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_dir_scb); in yfs_deliver_fs_link()
980 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_link()
1004 struct afs_call *call; in yfs_fs_link() local
1012 call = afs_alloc_flat_call(net, &yfs_RXYFSLink, in yfs_fs_link()
1021 if (!call) in yfs_fs_link()
1024 call->key = fc->key; in yfs_fs_link()
1025 call->out_dir_scb = dvnode_scb; in yfs_fs_link()
1026 call->out_scb = vnode_scb; in yfs_fs_link()
1029 bp = call->request; in yfs_fs_link()
1035 yfs_check_req(call, bp); in yfs_fs_link()
1037 afs_use_fs_server(call, fc->cbi); in yfs_fs_link()
1038 trace_afs_make_fs_call1(call, &vnode->fid, name); in yfs_fs_link()
1039 afs_set_fc_call(call, fc); in yfs_fs_link()
1040 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_link()
1041 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_link()
1047 static int yfs_deliver_fs_symlink(struct afs_call *call) in yfs_deliver_fs_symlink() argument
1052 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_symlink()
1054 ret = afs_transfer_reply(call); in yfs_deliver_fs_symlink()
1059 bp = call->buffer; in yfs_deliver_fs_symlink()
1060 xdr_decode_YFSFid(&bp, call->out_fid); in yfs_deliver_fs_symlink()
1061 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); in yfs_deliver_fs_symlink()
1064 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_dir_scb); in yfs_deliver_fs_symlink()
1067 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_symlink()
1094 struct afs_call *call; in yfs_fs_symlink() local
1103 call = afs_alloc_flat_call(net, &yfs_RXYFSSymlink, in yfs_fs_symlink()
1114 if (!call) in yfs_fs_symlink()
1117 call->key = fc->key; in yfs_fs_symlink()
1118 call->out_dir_scb = dvnode_scb; in yfs_fs_symlink()
1119 call->out_fid = newfid; in yfs_fs_symlink()
1120 call->out_scb = vnode_scb; in yfs_fs_symlink()
1123 bp = call->request; in yfs_fs_symlink()
1130 yfs_check_req(call, bp); in yfs_fs_symlink()
1132 afs_use_fs_server(call, fc->cbi); in yfs_fs_symlink()
1133 trace_afs_make_fs_call1(call, &dvnode->fid, name); in yfs_fs_symlink()
1134 afs_set_fc_call(call, fc); in yfs_fs_symlink()
1135 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_symlink()
1136 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_symlink()
1142 static int yfs_deliver_fs_rename(struct afs_call *call) in yfs_deliver_fs_rename() argument
1147 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_rename()
1149 ret = afs_transfer_reply(call); in yfs_deliver_fs_rename()
1153 bp = call->buffer; in yfs_deliver_fs_rename()
1154 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_dir_scb); in yfs_deliver_fs_rename()
1157 if (call->out_dir_scb != call->out_scb) { in yfs_deliver_fs_rename()
1158 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); in yfs_deliver_fs_rename()
1163 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_rename()
1189 struct afs_call *call; in yfs_fs_rename() local
1198 call = afs_alloc_flat_call(net, &yfs_RXYFSRename, in yfs_fs_rename()
1208 if (!call) in yfs_fs_rename()
1211 call->key = fc->key; in yfs_fs_rename()
1212 call->out_dir_scb = orig_dvnode_scb; in yfs_fs_rename()
1213 call->out_scb = new_dvnode_scb; in yfs_fs_rename()
1216 bp = call->request; in yfs_fs_rename()
1223 yfs_check_req(call, bp); in yfs_fs_rename()
1225 afs_use_fs_server(call, fc->cbi); in yfs_fs_rename()
1226 trace_afs_make_fs_call2(call, &orig_dvnode->fid, orig_name, new_name); in yfs_fs_rename()
1227 afs_set_fc_call(call, fc); in yfs_fs_rename()
1228 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_rename()
1229 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_rename()
1251 struct afs_call *call; in yfs_fs_store_data() local
1273 call = afs_alloc_flat_call(net, &yfs_RXYFSStoreData64, in yfs_fs_store_data()
1281 if (!call) in yfs_fs_store_data()
1284 call->key = fc->key; in yfs_fs_store_data()
1285 call->mapping = mapping; in yfs_fs_store_data()
1286 call->first = first; in yfs_fs_store_data()
1287 call->last = last; in yfs_fs_store_data()
1288 call->first_offset = offset; in yfs_fs_store_data()
1289 call->last_to = to; in yfs_fs_store_data()
1290 call->send_pages = true; in yfs_fs_store_data()
1291 call->out_scb = scb; in yfs_fs_store_data()
1294 bp = call->request; in yfs_fs_store_data()
1302 yfs_check_req(call, bp); in yfs_fs_store_data()
1304 afs_use_fs_server(call, fc->cbi); in yfs_fs_store_data()
1305 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_store_data()
1306 afs_set_fc_call(call, fc); in yfs_fs_store_data()
1307 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_store_data()
1308 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_store_data()
1336 struct afs_call *call; in yfs_fs_setattr_size() local
1343 call = afs_alloc_flat_call(net, &yfs_RXYFSStoreData64_as_Status, in yfs_fs_setattr_size()
1350 if (!call) in yfs_fs_setattr_size()
1353 call->key = fc->key; in yfs_fs_setattr_size()
1354 call->out_scb = scb; in yfs_fs_setattr_size()
1357 bp = call->request; in yfs_fs_setattr_size()
1365 yfs_check_req(call, bp); in yfs_fs_setattr_size()
1367 afs_use_fs_server(call, fc->cbi); in yfs_fs_setattr_size()
1368 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_setattr_size()
1369 afs_set_fc_call(call, fc); in yfs_fs_setattr_size()
1370 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_setattr_size()
1371 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_setattr_size()
1382 struct afs_call *call; in yfs_fs_setattr() local
1392 call = afs_alloc_flat_call(net, &yfs_RXYFSStoreStatus, in yfs_fs_setattr()
1398 if (!call) in yfs_fs_setattr()
1401 call->key = fc->key; in yfs_fs_setattr()
1402 call->out_scb = scb; in yfs_fs_setattr()
1405 bp = call->request; in yfs_fs_setattr()
1410 yfs_check_req(call, bp); in yfs_fs_setattr()
1412 afs_use_fs_server(call, fc->cbi); in yfs_fs_setattr()
1413 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_setattr()
1414 afs_set_fc_call(call, fc); in yfs_fs_setattr()
1415 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_setattr()
1416 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_setattr()
1422 static int yfs_deliver_fs_get_volume_status(struct afs_call *call) in yfs_deliver_fs_get_volume_status() argument
1429 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_get_volume_status()
1431 switch (call->unmarshall) { in yfs_deliver_fs_get_volume_status()
1433 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1434 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSFetchVolumeStatus)); in yfs_deliver_fs_get_volume_status()
1440 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1444 bp = call->buffer; in yfs_deliver_fs_get_volume_status()
1445 xdr_decode_YFSFetchVolumeStatus(&bp, call->out_volstatus); in yfs_deliver_fs_get_volume_status()
1446 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1447 afs_extract_to_tmp(call); in yfs_deliver_fs_get_volume_status()
1452 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1456 call->count = ntohl(call->tmp); in yfs_deliver_fs_get_volume_status()
1457 _debug("volname length: %u", call->count); in yfs_deliver_fs_get_volume_status()
1458 if (call->count >= AFSNAMEMAX) in yfs_deliver_fs_get_volume_status()
1459 return afs_protocol_error(call, -EBADMSG, in yfs_deliver_fs_get_volume_status()
1461 size = (call->count + 3) & ~3; /* It's padded */ in yfs_deliver_fs_get_volume_status()
1462 afs_extract_to_buf(call, size); in yfs_deliver_fs_get_volume_status()
1463 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1469 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1473 p = call->buffer; in yfs_deliver_fs_get_volume_status()
1474 p[call->count] = 0; in yfs_deliver_fs_get_volume_status()
1476 afs_extract_to_tmp(call); in yfs_deliver_fs_get_volume_status()
1477 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1482 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1486 call->count = ntohl(call->tmp); in yfs_deliver_fs_get_volume_status()
1487 _debug("offline msg length: %u", call->count); in yfs_deliver_fs_get_volume_status()
1488 if (call->count >= AFSNAMEMAX) in yfs_deliver_fs_get_volume_status()
1489 return afs_protocol_error(call, -EBADMSG, in yfs_deliver_fs_get_volume_status()
1491 size = (call->count + 3) & ~3; /* It's padded */ in yfs_deliver_fs_get_volume_status()
1492 afs_extract_to_buf(call, size); in yfs_deliver_fs_get_volume_status()
1493 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1499 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1503 p = call->buffer; in yfs_deliver_fs_get_volume_status()
1504 p[call->count] = 0; in yfs_deliver_fs_get_volume_status()
1507 afs_extract_to_tmp(call); in yfs_deliver_fs_get_volume_status()
1508 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1513 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1517 call->count = ntohl(call->tmp); in yfs_deliver_fs_get_volume_status()
1518 _debug("motd length: %u", call->count); in yfs_deliver_fs_get_volume_status()
1519 if (call->count >= AFSNAMEMAX) in yfs_deliver_fs_get_volume_status()
1520 return afs_protocol_error(call, -EBADMSG, in yfs_deliver_fs_get_volume_status()
1522 size = (call->count + 3) & ~3; /* It's padded */ in yfs_deliver_fs_get_volume_status()
1523 afs_extract_to_buf(call, size); in yfs_deliver_fs_get_volume_status()
1524 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1530 ret = afs_extract_data(call, false); in yfs_deliver_fs_get_volume_status()
1534 p = call->buffer; in yfs_deliver_fs_get_volume_status()
1535 p[call->count] = 0; in yfs_deliver_fs_get_volume_status()
1538 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1566 struct afs_call *call; in yfs_fs_get_volume_status() local
1572 call = afs_alloc_flat_call(net, &yfs_RXYFSGetVolumeStatus, in yfs_fs_get_volume_status()
1579 if (!call) in yfs_fs_get_volume_status()
1582 call->key = fc->key; in yfs_fs_get_volume_status()
1583 call->out_volstatus = vs; in yfs_fs_get_volume_status()
1586 bp = call->request; in yfs_fs_get_volume_status()
1590 yfs_check_req(call, bp); in yfs_fs_get_volume_status()
1592 afs_use_fs_server(call, fc->cbi); in yfs_fs_get_volume_status()
1593 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_get_volume_status()
1594 afs_set_fc_call(call, fc); in yfs_fs_get_volume_status()
1595 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_get_volume_status()
1596 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_get_volume_status()
1638 struct afs_call *call; in yfs_fs_set_lock() local
1644 call = afs_alloc_flat_call(net, &yfs_RXYFSSetLock, in yfs_fs_set_lock()
1650 if (!call) in yfs_fs_set_lock()
1653 call->key = fc->key; in yfs_fs_set_lock()
1654 call->lvnode = vnode; in yfs_fs_set_lock()
1655 call->out_scb = scb; in yfs_fs_set_lock()
1658 bp = call->request; in yfs_fs_set_lock()
1663 yfs_check_req(call, bp); in yfs_fs_set_lock()
1665 afs_use_fs_server(call, fc->cbi); in yfs_fs_set_lock()
1666 trace_afs_make_fs_calli(call, &vnode->fid, type); in yfs_fs_set_lock()
1667 afs_set_fc_call(call, fc); in yfs_fs_set_lock()
1668 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_set_lock()
1669 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_set_lock()
1678 struct afs_call *call; in yfs_fs_extend_lock() local
1684 call = afs_alloc_flat_call(net, &yfs_RXYFSExtendLock, in yfs_fs_extend_lock()
1689 if (!call) in yfs_fs_extend_lock()
1692 call->key = fc->key; in yfs_fs_extend_lock()
1693 call->lvnode = vnode; in yfs_fs_extend_lock()
1694 call->out_scb = scb; in yfs_fs_extend_lock()
1697 bp = call->request; in yfs_fs_extend_lock()
1701 yfs_check_req(call, bp); in yfs_fs_extend_lock()
1703 afs_use_fs_server(call, fc->cbi); in yfs_fs_extend_lock()
1704 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_extend_lock()
1705 afs_set_fc_call(call, fc); in yfs_fs_extend_lock()
1706 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_extend_lock()
1707 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_extend_lock()
1716 struct afs_call *call; in yfs_fs_release_lock() local
1722 call = afs_alloc_flat_call(net, &yfs_RXYFSReleaseLock, in yfs_fs_release_lock()
1727 if (!call) in yfs_fs_release_lock()
1730 call->key = fc->key; in yfs_fs_release_lock()
1731 call->lvnode = vnode; in yfs_fs_release_lock()
1732 call->out_scb = scb; in yfs_fs_release_lock()
1735 bp = call->request; in yfs_fs_release_lock()
1739 yfs_check_req(call, bp); in yfs_fs_release_lock()
1741 afs_use_fs_server(call, fc->cbi); in yfs_fs_release_lock()
1742 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_release_lock()
1743 afs_set_fc_call(call, fc); in yfs_fs_release_lock()
1744 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_release_lock()
1745 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_release_lock()
1767 struct afs_call *call; in yfs_fs_fetch_status() local
1773 call = afs_alloc_flat_call(net, &yfs_RXYFSFetchStatus, in yfs_fs_fetch_status()
1779 if (!call) { in yfs_fs_fetch_status()
1784 call->key = fc->key; in yfs_fs_fetch_status()
1785 call->out_scb = scb; in yfs_fs_fetch_status()
1786 call->out_volsync = volsync; in yfs_fs_fetch_status()
1789 bp = call->request; in yfs_fs_fetch_status()
1793 yfs_check_req(call, bp); in yfs_fs_fetch_status()
1795 afs_use_fs_server(call, fc->cbi); in yfs_fs_fetch_status()
1796 trace_afs_make_fs_call(call, fid); in yfs_fs_fetch_status()
1797 afs_set_fc_call(call, fc); in yfs_fs_fetch_status()
1798 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_fetch_status()
1799 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_fetch_status()
1803 * Deliver reply data to an YFS.InlineBulkStatus call
1805 static int yfs_deliver_fs_inline_bulk_status(struct afs_call *call) in yfs_deliver_fs_inline_bulk_status() argument
1812 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_inline_bulk_status()
1814 switch (call->unmarshall) { in yfs_deliver_fs_inline_bulk_status()
1816 afs_extract_to_tmp(call); in yfs_deliver_fs_inline_bulk_status()
1817 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1823 ret = afs_extract_data(call, true); in yfs_deliver_fs_inline_bulk_status()
1827 tmp = ntohl(call->tmp); in yfs_deliver_fs_inline_bulk_status()
1828 _debug("status count: %u/%u", tmp, call->count2); in yfs_deliver_fs_inline_bulk_status()
1829 if (tmp != call->count2) in yfs_deliver_fs_inline_bulk_status()
1830 return afs_protocol_error(call, -EBADMSG, in yfs_deliver_fs_inline_bulk_status()
1833 call->count = 0; in yfs_deliver_fs_inline_bulk_status()
1834 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1836 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSFetchStatus)); in yfs_deliver_fs_inline_bulk_status()
1840 _debug("extract status array %u", call->count); in yfs_deliver_fs_inline_bulk_status()
1841 ret = afs_extract_data(call, true); in yfs_deliver_fs_inline_bulk_status()
1845 bp = call->buffer; in yfs_deliver_fs_inline_bulk_status()
1846 scb = &call->out_scb[call->count]; in yfs_deliver_fs_inline_bulk_status()
1847 ret = xdr_decode_YFSFetchStatus(&bp, call, scb); in yfs_deliver_fs_inline_bulk_status()
1851 call->count++; in yfs_deliver_fs_inline_bulk_status()
1852 if (call->count < call->count2) in yfs_deliver_fs_inline_bulk_status()
1855 call->count = 0; in yfs_deliver_fs_inline_bulk_status()
1856 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1857 afs_extract_to_tmp(call); in yfs_deliver_fs_inline_bulk_status()
1863 ret = afs_extract_data(call, true); in yfs_deliver_fs_inline_bulk_status()
1867 tmp = ntohl(call->tmp); in yfs_deliver_fs_inline_bulk_status()
1869 if (tmp != call->count2) in yfs_deliver_fs_inline_bulk_status()
1870 return afs_protocol_error(call, -EBADMSG, in yfs_deliver_fs_inline_bulk_status()
1872 call->count = 0; in yfs_deliver_fs_inline_bulk_status()
1873 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1875 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSCallBack)); in yfs_deliver_fs_inline_bulk_status()
1880 ret = afs_extract_data(call, true); in yfs_deliver_fs_inline_bulk_status()
1885 bp = call->buffer; in yfs_deliver_fs_inline_bulk_status()
1886 scb = &call->out_scb[call->count]; in yfs_deliver_fs_inline_bulk_status()
1887 xdr_decode_YFSCallBack(&bp, call, scb); in yfs_deliver_fs_inline_bulk_status()
1888 call->count++; in yfs_deliver_fs_inline_bulk_status()
1889 if (call->count < call->count2) in yfs_deliver_fs_inline_bulk_status()
1892 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSVolSync)); in yfs_deliver_fs_inline_bulk_status()
1893 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1897 ret = afs_extract_data(call, false); in yfs_deliver_fs_inline_bulk_status()
1901 bp = call->buffer; in yfs_deliver_fs_inline_bulk_status()
1902 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_inline_bulk_status()
1904 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1935 struct afs_call *call; in yfs_fs_inline_bulk_status() local
1942 call = afs_alloc_flat_call(net, &yfs_RXYFSInlineBulkStatus, in yfs_fs_inline_bulk_status()
1948 if (!call) { in yfs_fs_inline_bulk_status()
1953 call->key = fc->key; in yfs_fs_inline_bulk_status()
1954 call->out_scb = statuses; in yfs_fs_inline_bulk_status()
1955 call->out_volsync = volsync; in yfs_fs_inline_bulk_status()
1956 call->count2 = nr_fids; in yfs_fs_inline_bulk_status()
1959 bp = call->request; in yfs_fs_inline_bulk_status()
1965 yfs_check_req(call, bp); in yfs_fs_inline_bulk_status()
1967 afs_use_fs_server(call, fc->cbi); in yfs_fs_inline_bulk_status()
1968 trace_afs_make_fs_call(call, &fids[0]); in yfs_fs_inline_bulk_status()
1969 afs_set_fc_call(call, fc); in yfs_fs_inline_bulk_status()
1970 afs_make_call(&fc->ac, call, GFP_NOFS); in yfs_fs_inline_bulk_status()
1971 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_inline_bulk_status()
1977 static int yfs_deliver_fs_fetch_opaque_acl(struct afs_call *call) in yfs_deliver_fs_fetch_opaque_acl() argument
1979 struct yfs_acl *yacl = call->out_yacl; in yfs_deliver_fs_fetch_opaque_acl()
1985 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_fetch_opaque_acl()
1987 switch (call->unmarshall) { in yfs_deliver_fs_fetch_opaque_acl()
1989 afs_extract_to_tmp(call); in yfs_deliver_fs_fetch_opaque_acl()
1990 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
1995 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_opaque_acl()
1999 size = call->count2 = ntohl(call->tmp); in yfs_deliver_fs_fetch_opaque_acl()
2007 acl->size = call->count2; in yfs_deliver_fs_fetch_opaque_acl()
2008 afs_extract_begin(call, acl->data, size); in yfs_deliver_fs_fetch_opaque_acl()
2010 afs_extract_discard(call, size); in yfs_deliver_fs_fetch_opaque_acl()
2012 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2017 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_opaque_acl()
2021 afs_extract_to_tmp(call); in yfs_deliver_fs_fetch_opaque_acl()
2022 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2027 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_opaque_acl()
2031 size = call->count2 = ntohl(call->tmp); in yfs_deliver_fs_fetch_opaque_acl()
2039 acl->size = call->count2; in yfs_deliver_fs_fetch_opaque_acl()
2040 afs_extract_begin(call, acl->data, size); in yfs_deliver_fs_fetch_opaque_acl()
2042 afs_extract_discard(call, size); in yfs_deliver_fs_fetch_opaque_acl()
2044 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2049 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_opaque_acl()
2053 afs_extract_to_buf(call, in yfs_deliver_fs_fetch_opaque_acl()
2057 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2062 ret = afs_extract_data(call, false); in yfs_deliver_fs_fetch_opaque_acl()
2066 bp = call->buffer; in yfs_deliver_fs_fetch_opaque_acl()
2069 ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); in yfs_deliver_fs_fetch_opaque_acl()
2072 xdr_decode_YFSVolSync(&bp, call->out_volsync); in yfs_deliver_fs_fetch_opaque_acl()
2074 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2112 struct afs_call *call; in yfs_fs_fetch_opaque_acl() local
2119 call = afs_alloc_flat_call(net, &yfs_RXYFSFetchOpaqueACL, in yfs_fs_fetch_opaque_acl()
2125 if (!call) { in yfs_fs_fetch_opaque_acl()
2130 call->key = fc->key; in yfs_fs_fetch_opaque_acl()
2131 call->out_yacl = yacl; in yfs_fs_fetch_opaque_acl()
2132 call->out_scb = scb; in yfs_fs_fetch_opaque_acl()
2133 call->out_volsync = NULL; in yfs_fs_fetch_opaque_acl()
2136 bp = call->request; in yfs_fs_fetch_opaque_acl()
2140 yfs_check_req(call, bp); in yfs_fs_fetch_opaque_acl()
2142 afs_use_fs_server(call, fc->cbi); in yfs_fs_fetch_opaque_acl()
2143 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_fetch_opaque_acl()
2144 afs_make_call(&fc->ac, call, GFP_KERNEL); in yfs_fs_fetch_opaque_acl()
2145 return (struct yfs_acl *)afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_fetch_opaque_acl()
2165 struct afs_call *call; in yfs_fs_store_opaque_acl2() local
2174 call = afs_alloc_flat_call(net, &yfs_RXYFSStoreOpaqueACL2, in yfs_fs_store_opaque_acl2()
2180 if (!call) { in yfs_fs_store_opaque_acl2()
2185 call->key = fc->key; in yfs_fs_store_opaque_acl2()
2186 call->out_scb = scb; in yfs_fs_store_opaque_acl2()
2187 call->out_volsync = NULL; in yfs_fs_store_opaque_acl2()
2190 bp = call->request; in yfs_fs_store_opaque_acl2()
2198 yfs_check_req(call, bp); in yfs_fs_store_opaque_acl2()
2200 trace_afs_make_fs_call(call, &vnode->fid); in yfs_fs_store_opaque_acl2()
2201 afs_make_call(&fc->ac, call, GFP_KERNEL); in yfs_fs_store_opaque_acl2()
2202 return afs_wait_for_call_to_complete(call, &fc->ac); in yfs_fs_store_opaque_acl2()