Lines Matching full:call
138 static void yfs_check_req(struct afs_call *call, __be32 *bp) in yfs_check_req() argument
140 size_t len = (void *)bp - call->request; in yfs_check_req()
142 if (len > call->request_size) in yfs_check_req()
144 call->type->name, len, call->request_size); in yfs_check_req()
145 else if (len < call->request_size) in yfs_check_req()
147 call->type->name, len, call->request_size); in yfs_check_req()
174 struct afs_call *call, in xdr_decode_YFSFetchStatus() argument
220 afs_protocol_error(call, afs_eproto_bad_status); in xdr_decode_YFSFetchStatus()
228 struct afs_call *call, in xdr_decode_YFSCallBack() argument
235 cb_expiry = ktime_add(call->issue_time, xdr_to_u64(x->expiration_time) * 100); in xdr_decode_YFSCallBack()
331 static int yfs_deliver_status_and_volsync(struct afs_call *call) in yfs_deliver_status_and_volsync() argument
333 struct afs_operation *op = call->op; in yfs_deliver_status_and_volsync()
337 ret = afs_transfer_reply(call); in yfs_deliver_status_and_volsync()
341 bp = call->buffer; in yfs_deliver_status_and_volsync()
342 xdr_decode_YFSFetchStatus(&bp, call, &op->file[0].scb); in yfs_deliver_status_and_volsync()
352 static int yfs_deliver_fs_fetch_data64(struct afs_call *call) in yfs_deliver_fs_fetch_data64() argument
354 struct afs_operation *op = call->op; in yfs_deliver_fs_fetch_data64()
362 call->unmarshall, call->iov_len, iov_iter_count(call->iter), in yfs_deliver_fs_fetch_data64()
363 call->remaining); in yfs_deliver_fs_fetch_data64()
365 switch (call->unmarshall) { in yfs_deliver_fs_fetch_data64()
367 call->remaining = 0; in yfs_deliver_fs_fetch_data64()
368 afs_extract_to_tmp64(call); in yfs_deliver_fs_fetch_data64()
369 call->unmarshall++; in yfs_deliver_fs_fetch_data64()
378 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_data64()
382 call->remaining = be64_to_cpu(call->tmp64); in yfs_deliver_fs_fetch_data64()
383 _debug("DATA length: %llu", call->remaining); in yfs_deliver_fs_fetch_data64()
385 if (call->remaining == 0) in yfs_deliver_fs_fetch_data64()
388 call->iter = &subreq->io_iter; in yfs_deliver_fs_fetch_data64()
389 call->iov_len = min(call->remaining, subreq->len - subreq->transferred); in yfs_deliver_fs_fetch_data64()
390 call->unmarshall++; in yfs_deliver_fs_fetch_data64()
395 count_before = call->iov_len; in yfs_deliver_fs_fetch_data64()
396 _debug("extract data %zu/%llu", count_before, call->remaining); in yfs_deliver_fs_fetch_data64()
398 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_data64()
399 subreq->transferred += count_before - call->iov_len; in yfs_deliver_fs_fetch_data64()
403 call->iter = &call->def_iter; in yfs_deliver_fs_fetch_data64()
404 if (call->remaining) in yfs_deliver_fs_fetch_data64()
408 afs_extract_discard(call, call->remaining); in yfs_deliver_fs_fetch_data64()
409 call->unmarshall = 3; in yfs_deliver_fs_fetch_data64()
414 iov_iter_count(call->iter), call->remaining); in yfs_deliver_fs_fetch_data64()
416 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_data64()
421 call->unmarshall = 4; in yfs_deliver_fs_fetch_data64()
422 afs_extract_to_buf(call, in yfs_deliver_fs_fetch_data64()
430 ret = afs_extract_data(call, false); in yfs_deliver_fs_fetch_data64()
434 bp = call->buffer; in yfs_deliver_fs_fetch_data64()
435 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_data64()
436 xdr_decode_YFSCallBack(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_data64()
442 call->unmarshall++; in yfs_deliver_fs_fetch_data64()
472 struct afs_call *call; in yfs_fs_fetch_data() local
480 call = afs_alloc_flat_call(op->net, &yfs_RXYFSFetchData64, in yfs_fs_fetch_data()
487 if (!call) in yfs_fs_fetch_data()
491 call->async = true; in yfs_fs_fetch_data()
494 bp = call->request; in yfs_fs_fetch_data()
500 yfs_check_req(call, bp); in yfs_fs_fetch_data()
502 call->fid = vp->fid; in yfs_fs_fetch_data()
503 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_fetch_data()
504 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_fetch_data()
510 static int yfs_deliver_fs_create_vnode(struct afs_call *call) in yfs_deliver_fs_create_vnode() argument
512 struct afs_operation *op = call->op; in yfs_deliver_fs_create_vnode()
518 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_create_vnode()
520 ret = afs_transfer_reply(call); in yfs_deliver_fs_create_vnode()
525 bp = call->buffer; in yfs_deliver_fs_create_vnode()
527 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_create_vnode()
528 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_create_vnode()
529 xdr_decode_YFSCallBack(&bp, call, &vp->scb); in yfs_deliver_fs_create_vnode()
553 struct afs_call *call; in yfs_fs_create_file() local
571 call = afs_alloc_flat_call(op->net, &afs_RXFSCreateFile, reqsz, rplsz); in yfs_fs_create_file()
572 if (!call) in yfs_fs_create_file()
576 bp = call->request; in yfs_fs_create_file()
583 yfs_check_req(call, bp); in yfs_fs_create_file()
585 call->fid = dvp->fid; in yfs_fs_create_file()
586 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_create_file()
587 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_create_file()
604 struct afs_call *call; in yfs_fs_make_dir() local
621 call = afs_alloc_flat_call(op->net, &yfs_RXFSMakeDir, reqsz, rplsz); in yfs_fs_make_dir()
622 if (!call) in yfs_fs_make_dir()
626 bp = call->request; in yfs_fs_make_dir()
632 yfs_check_req(call, bp); in yfs_fs_make_dir()
634 call->fid = dvp->fid; in yfs_fs_make_dir()
635 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_make_dir()
636 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_make_dir()
642 static int yfs_deliver_fs_remove_file2(struct afs_call *call) in yfs_deliver_fs_remove_file2() argument
644 struct afs_operation *op = call->op; in yfs_deliver_fs_remove_file2()
651 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_remove_file2()
653 ret = afs_transfer_reply(call); in yfs_deliver_fs_remove_file2()
657 bp = call->buffer; in yfs_deliver_fs_remove_file2()
658 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_remove_file2()
660 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_remove_file2()
667 static void yfs_done_fs_remove_file2(struct afs_call *call) in yfs_done_fs_remove_file2() argument
669 if (call->error == -ECONNABORTED && in yfs_done_fs_remove_file2()
670 (call->abort_code == RX_INVALID_OPERATION || in yfs_done_fs_remove_file2()
671 call->abort_code == RXGEN_OPCODE)) { in yfs_done_fs_remove_file2()
672 set_bit(AFS_SERVER_FL_NO_RM2, &call->op->server->flags); in yfs_done_fs_remove_file2()
673 call->op->flags |= AFS_OPERATION_DOWNGRADE; in yfs_done_fs_remove_file2()
695 struct afs_call *call; in yfs_fs_remove_file2() local
700 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRemoveFile2, in yfs_fs_remove_file2()
709 if (!call) in yfs_fs_remove_file2()
713 bp = call->request; in yfs_fs_remove_file2()
718 yfs_check_req(call, bp); in yfs_fs_remove_file2()
720 call->fid = dvp->fid; in yfs_fs_remove_file2()
721 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_remove_file2()
722 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_remove_file2()
728 static int yfs_deliver_fs_remove(struct afs_call *call) in yfs_deliver_fs_remove() argument
730 struct afs_operation *op = call->op; in yfs_deliver_fs_remove()
735 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_remove()
737 ret = afs_transfer_reply(call); in yfs_deliver_fs_remove()
741 bp = call->buffer; in yfs_deliver_fs_remove()
742 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_remove()
764 struct afs_call *call; in yfs_fs_remove_file() local
772 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRemoveFile, in yfs_fs_remove_file()
779 if (!call) in yfs_fs_remove_file()
783 bp = call->request; in yfs_fs_remove_file()
788 yfs_check_req(call, bp); in yfs_fs_remove_file()
790 call->fid = dvp->fid; in yfs_fs_remove_file()
791 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_remove_file()
792 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_remove_file()
809 struct afs_call *call; in yfs_fs_remove_dir() local
814 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRemoveDir, in yfs_fs_remove_dir()
821 if (!call) in yfs_fs_remove_dir()
825 bp = call->request; in yfs_fs_remove_dir()
830 yfs_check_req(call, bp); in yfs_fs_remove_dir()
832 call->fid = dvp->fid; in yfs_fs_remove_dir()
833 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_remove_dir()
834 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_remove_dir()
840 static int yfs_deliver_fs_link(struct afs_call *call) in yfs_deliver_fs_link() argument
842 struct afs_operation *op = call->op; in yfs_deliver_fs_link()
848 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_link()
850 ret = afs_transfer_reply(call); in yfs_deliver_fs_link()
854 bp = call->buffer; in yfs_deliver_fs_link()
855 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_link()
856 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_link()
880 struct afs_call *call; in yfs_fs_link() local
885 call = afs_alloc_flat_call(op->net, &yfs_RXYFSLink, in yfs_fs_link()
894 if (!call) in yfs_fs_link()
898 bp = call->request; in yfs_fs_link()
904 yfs_check_req(call, bp); in yfs_fs_link()
906 call->fid = vp->fid; in yfs_fs_link()
907 trace_afs_make_fs_call1(call, &vp->fid, name); in yfs_fs_link()
908 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_link()
914 static int yfs_deliver_fs_symlink(struct afs_call *call) in yfs_deliver_fs_symlink() argument
916 struct afs_operation *op = call->op; in yfs_deliver_fs_symlink()
922 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_symlink()
924 ret = afs_transfer_reply(call); in yfs_deliver_fs_symlink()
929 bp = call->buffer; in yfs_deliver_fs_symlink()
931 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_symlink()
932 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_symlink()
956 struct afs_call *call; in yfs_fs_symlink() local
964 call = afs_alloc_flat_call(op->net, &yfs_RXYFSSymlink, in yfs_fs_symlink()
975 if (!call) in yfs_fs_symlink()
979 bp = call->request; in yfs_fs_symlink()
986 yfs_check_req(call, bp); in yfs_fs_symlink()
988 call->fid = dvp->fid; in yfs_fs_symlink()
989 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_symlink()
990 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_symlink()
996 static int yfs_deliver_fs_rename(struct afs_call *call) in yfs_deliver_fs_rename() argument
998 struct afs_operation *op = call->op; in yfs_deliver_fs_rename()
1004 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_rename()
1006 ret = afs_transfer_reply(call); in yfs_deliver_fs_rename()
1010 bp = call->buffer; in yfs_deliver_fs_rename()
1014 xdr_decode_YFSFetchStatus(&bp, call, &orig_dvp->scb); in yfs_deliver_fs_rename()
1015 xdr_decode_YFSFetchStatus(&bp, call, &new_dvp->scb); in yfs_deliver_fs_rename()
1040 struct afs_call *call; in yfs_fs_rename() local
1048 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRename, in yfs_fs_rename()
1058 if (!call) in yfs_fs_rename()
1062 bp = call->request; in yfs_fs_rename()
1069 yfs_check_req(call, bp); in yfs_fs_rename()
1071 call->fid = orig_dvp->fid; in yfs_fs_rename()
1072 trace_afs_make_fs_call2(call, &orig_dvp->fid, orig_name, new_name); in yfs_fs_rename()
1073 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_rename()
1080 static int yfs_deliver_fs_rename_1(struct afs_call *call) in yfs_deliver_fs_rename_1() argument
1082 struct afs_operation *op = call->op; in yfs_deliver_fs_rename_1()
1089 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_rename_1()
1091 ret = afs_transfer_reply(call); in yfs_deliver_fs_rename_1()
1095 bp = call->buffer; in yfs_deliver_fs_rename_1()
1099 xdr_decode_YFSFetchStatus(&bp, call, &orig_dvp->scb); in yfs_deliver_fs_rename_1()
1101 xdr_decode_YFSFetchStatus(&bp, call, &old_vp->scb); in yfs_deliver_fs_rename_1()
1102 xdr_decode_YFSFetchStatus(&bp, call, &new_dvp->scb); in yfs_deliver_fs_rename_1()
1113 static int yfs_deliver_fs_rename_2(struct afs_call *call) in yfs_deliver_fs_rename_2() argument
1115 struct afs_operation *op = call->op; in yfs_deliver_fs_rename_2()
1123 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_rename_2()
1125 ret = afs_transfer_reply(call); in yfs_deliver_fs_rename_2()
1129 bp = call->buffer; in yfs_deliver_fs_rename_2()
1133 xdr_decode_YFSFetchStatus(&bp, call, &orig_dvp->scb); in yfs_deliver_fs_rename_2()
1135 xdr_decode_YFSFetchStatus(&bp, call, &old_vp->scb); in yfs_deliver_fs_rename_2()
1136 xdr_decode_YFSFetchStatus(&bp, call, &new_dvp->scb); in yfs_deliver_fs_rename_2()
1138 xdr_decode_YFSFetchStatus(&bp, call, &new_vp->scb); in yfs_deliver_fs_rename_2()
1144 static void yfs_done_fs_rename_replace(struct afs_call *call) in yfs_done_fs_rename_replace() argument
1146 if (call->error == -ECONNABORTED && in yfs_done_fs_rename_replace()
1147 (call->abort_code == RX_INVALID_OPERATION || in yfs_done_fs_rename_replace()
1148 call->abort_code == RXGEN_OPCODE)) { in yfs_done_fs_rename_replace()
1149 set_bit(AFS_SERVER_FL_NO_RENAME2, &call->op->server->flags); in yfs_done_fs_rename_replace()
1150 call->op->flags |= AFS_OPERATION_DOWNGRADE; in yfs_done_fs_rename_replace()
1195 struct afs_call *call; in yfs_fs_rename_replace() local
1200 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRename_Replace, in yfs_fs_rename_replace()
1214 if (!call) in yfs_fs_rename_replace()
1218 bp = call->request; in yfs_fs_rename_replace()
1225 yfs_check_req(call, bp); in yfs_fs_rename_replace()
1227 call->fid = orig_dvp->fid; in yfs_fs_rename_replace()
1228 trace_afs_make_fs_call2(call, &orig_dvp->fid, orig_name, new_name); in yfs_fs_rename_replace()
1229 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_rename_replace()
1241 struct afs_call *call; in yfs_fs_rename_noreplace() local
1246 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRename_NoReplace, in yfs_fs_rename_noreplace()
1258 if (!call) in yfs_fs_rename_noreplace()
1262 bp = call->request; in yfs_fs_rename_noreplace()
1269 yfs_check_req(call, bp); in yfs_fs_rename_noreplace()
1271 call->fid = orig_dvp->fid; in yfs_fs_rename_noreplace()
1272 trace_afs_make_fs_call2(call, &orig_dvp->fid, orig_name, new_name); in yfs_fs_rename_noreplace()
1273 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_rename_noreplace()
1285 struct afs_call *call; in yfs_fs_rename_exchange() local
1290 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRename_Exchange, in yfs_fs_rename_exchange()
1304 if (!call) in yfs_fs_rename_exchange()
1308 bp = call->request; in yfs_fs_rename_exchange()
1315 yfs_check_req(call, bp); in yfs_fs_rename_exchange()
1317 call->fid = orig_dvp->fid; in yfs_fs_rename_exchange()
1318 trace_afs_make_fs_call2(call, &orig_dvp->fid, orig_name, new_name); in yfs_fs_rename_exchange()
1319 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_rename_exchange()
1338 struct afs_call *call; in yfs_fs_store_data() local
1349 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreData64, in yfs_fs_store_data()
1357 if (!call) in yfs_fs_store_data()
1360 call->write_iter = op->store.write_iter; in yfs_fs_store_data()
1363 bp = call->request; in yfs_fs_store_data()
1371 yfs_check_req(call, bp); in yfs_fs_store_data()
1373 call->fid = vp->fid; in yfs_fs_store_data()
1374 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_store_data()
1375 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_store_data()
1402 struct afs_call *call; in yfs_fs_setattr_size() local
1409 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreData64_as_Status, in yfs_fs_setattr_size()
1416 if (!call) in yfs_fs_setattr_size()
1420 bp = call->request; in yfs_fs_setattr_size()
1428 yfs_check_req(call, bp); in yfs_fs_setattr_size()
1430 call->fid = vp->fid; in yfs_fs_setattr_size()
1431 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_setattr_size()
1432 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_setattr_size()
1442 struct afs_call *call; in yfs_fs_setattr() local
1452 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreStatus, in yfs_fs_setattr()
1458 if (!call) in yfs_fs_setattr()
1462 bp = call->request; in yfs_fs_setattr()
1467 yfs_check_req(call, bp); in yfs_fs_setattr()
1469 call->fid = vp->fid; in yfs_fs_setattr()
1470 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_setattr()
1471 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_setattr()
1477 static int yfs_deliver_fs_get_volume_status(struct afs_call *call) in yfs_deliver_fs_get_volume_status() argument
1479 struct afs_operation *op = call->op; in yfs_deliver_fs_get_volume_status()
1485 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_get_volume_status()
1487 switch (call->unmarshall) { in yfs_deliver_fs_get_volume_status()
1489 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1490 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSFetchVolumeStatus)); in yfs_deliver_fs_get_volume_status()
1496 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1500 bp = call->buffer; in yfs_deliver_fs_get_volume_status()
1502 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1503 afs_extract_to_tmp(call); in yfs_deliver_fs_get_volume_status()
1508 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1512 call->count = ntohl(call->tmp); in yfs_deliver_fs_get_volume_status()
1513 _debug("volname length: %u", call->count); in yfs_deliver_fs_get_volume_status()
1514 if (call->count >= AFSNAMEMAX) in yfs_deliver_fs_get_volume_status()
1515 return afs_protocol_error(call, afs_eproto_volname_len); in yfs_deliver_fs_get_volume_status()
1516 size = (call->count + 3) & ~3; /* It's padded */ in yfs_deliver_fs_get_volume_status()
1517 afs_extract_to_buf(call, size); in yfs_deliver_fs_get_volume_status()
1518 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1524 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1528 p = call->buffer; in yfs_deliver_fs_get_volume_status()
1529 p[call->count] = 0; in yfs_deliver_fs_get_volume_status()
1531 afs_extract_to_tmp(call); in yfs_deliver_fs_get_volume_status()
1532 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1537 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1541 call->count = ntohl(call->tmp); in yfs_deliver_fs_get_volume_status()
1542 _debug("offline msg length: %u", call->count); in yfs_deliver_fs_get_volume_status()
1543 if (call->count >= AFSNAMEMAX) in yfs_deliver_fs_get_volume_status()
1544 return afs_protocol_error(call, afs_eproto_offline_msg_len); in yfs_deliver_fs_get_volume_status()
1545 size = (call->count + 3) & ~3; /* It's padded */ in yfs_deliver_fs_get_volume_status()
1546 afs_extract_to_buf(call, size); in yfs_deliver_fs_get_volume_status()
1547 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1553 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1557 p = call->buffer; in yfs_deliver_fs_get_volume_status()
1558 p[call->count] = 0; in yfs_deliver_fs_get_volume_status()
1561 afs_extract_to_tmp(call); in yfs_deliver_fs_get_volume_status()
1562 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1567 ret = afs_extract_data(call, true); in yfs_deliver_fs_get_volume_status()
1571 call->count = ntohl(call->tmp); in yfs_deliver_fs_get_volume_status()
1572 _debug("motd length: %u", call->count); in yfs_deliver_fs_get_volume_status()
1573 if (call->count >= AFSNAMEMAX) in yfs_deliver_fs_get_volume_status()
1574 return afs_protocol_error(call, afs_eproto_motd_len); in yfs_deliver_fs_get_volume_status()
1575 size = (call->count + 3) & ~3; /* It's padded */ in yfs_deliver_fs_get_volume_status()
1576 afs_extract_to_buf(call, size); in yfs_deliver_fs_get_volume_status()
1577 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1583 ret = afs_extract_data(call, false); in yfs_deliver_fs_get_volume_status()
1587 p = call->buffer; in yfs_deliver_fs_get_volume_status()
1588 p[call->count] = 0; in yfs_deliver_fs_get_volume_status()
1591 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1618 struct afs_call *call; in yfs_fs_get_volume_status() local
1623 call = afs_alloc_flat_call(op->net, &yfs_RXYFSGetVolumeStatus, in yfs_fs_get_volume_status()
1630 if (!call) in yfs_fs_get_volume_status()
1634 bp = call->request; in yfs_fs_get_volume_status()
1638 yfs_check_req(call, bp); in yfs_fs_get_volume_status()
1640 call->fid = vp->fid; in yfs_fs_get_volume_status()
1641 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_get_volume_status()
1642 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_get_volume_status()
1683 struct afs_call *call; in yfs_fs_set_lock() local
1688 call = afs_alloc_flat_call(op->net, &yfs_RXYFSSetLock, in yfs_fs_set_lock()
1694 if (!call) in yfs_fs_set_lock()
1698 bp = call->request; in yfs_fs_set_lock()
1703 yfs_check_req(call, bp); in yfs_fs_set_lock()
1705 call->fid = vp->fid; in yfs_fs_set_lock()
1706 trace_afs_make_fs_calli(call, &vp->fid, op->lock.type); in yfs_fs_set_lock()
1707 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_set_lock()
1716 struct afs_call *call; in yfs_fs_extend_lock() local
1721 call = afs_alloc_flat_call(op->net, &yfs_RXYFSExtendLock, in yfs_fs_extend_lock()
1726 if (!call) in yfs_fs_extend_lock()
1730 bp = call->request; in yfs_fs_extend_lock()
1734 yfs_check_req(call, bp); in yfs_fs_extend_lock()
1736 call->fid = vp->fid; in yfs_fs_extend_lock()
1737 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_extend_lock()
1738 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_extend_lock()
1747 struct afs_call *call; in yfs_fs_release_lock() local
1752 call = afs_alloc_flat_call(op->net, &yfs_RXYFSReleaseLock, in yfs_fs_release_lock()
1757 if (!call) in yfs_fs_release_lock()
1761 bp = call->request; in yfs_fs_release_lock()
1765 yfs_check_req(call, bp); in yfs_fs_release_lock()
1767 call->fid = vp->fid; in yfs_fs_release_lock()
1768 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_release_lock()
1769 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_release_lock()
1775 static int yfs_deliver_fs_fetch_status(struct afs_call *call) in yfs_deliver_fs_fetch_status() argument
1777 struct afs_operation *op = call->op; in yfs_deliver_fs_fetch_status()
1782 ret = afs_transfer_reply(call); in yfs_deliver_fs_fetch_status()
1787 bp = call->buffer; in yfs_deliver_fs_fetch_status()
1788 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_status()
1789 xdr_decode_YFSCallBack(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_status()
1812 struct afs_call *call; in yfs_fs_fetch_status() local
1818 call = afs_alloc_flat_call(op->net, &yfs_RXYFSFetchStatus, in yfs_fs_fetch_status()
1824 if (!call) in yfs_fs_fetch_status()
1828 bp = call->request; in yfs_fs_fetch_status()
1832 yfs_check_req(call, bp); in yfs_fs_fetch_status()
1834 call->fid = vp->fid; in yfs_fs_fetch_status()
1835 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_fetch_status()
1836 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_fetch_status()
1840 * Deliver reply data to an YFS.InlineBulkStatus call
1842 static int yfs_deliver_fs_inline_bulk_status(struct afs_call *call) in yfs_deliver_fs_inline_bulk_status() argument
1844 struct afs_operation *op = call->op; in yfs_deliver_fs_inline_bulk_status()
1850 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_inline_bulk_status()
1852 switch (call->unmarshall) { in yfs_deliver_fs_inline_bulk_status()
1854 afs_extract_to_tmp(call); in yfs_deliver_fs_inline_bulk_status()
1855 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1861 ret = afs_extract_data(call, true); in yfs_deliver_fs_inline_bulk_status()
1865 tmp = ntohl(call->tmp); in yfs_deliver_fs_inline_bulk_status()
1868 return afs_protocol_error(call, afs_eproto_ibulkst_count); in yfs_deliver_fs_inline_bulk_status()
1870 call->count = 0; in yfs_deliver_fs_inline_bulk_status()
1871 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1873 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSFetchStatus)); in yfs_deliver_fs_inline_bulk_status()
1877 _debug("extract status array %u", call->count); in yfs_deliver_fs_inline_bulk_status()
1878 ret = afs_extract_data(call, true); in yfs_deliver_fs_inline_bulk_status()
1882 switch (call->count) { in yfs_deliver_fs_inline_bulk_status()
1890 scb = &op->more_files[call->count - 2].scb; in yfs_deliver_fs_inline_bulk_status()
1894 bp = call->buffer; in yfs_deliver_fs_inline_bulk_status()
1895 xdr_decode_YFSFetchStatus(&bp, call, scb); in yfs_deliver_fs_inline_bulk_status()
1897 call->count++; in yfs_deliver_fs_inline_bulk_status()
1898 if (call->count < op->nr_files) in yfs_deliver_fs_inline_bulk_status()
1901 call->count = 0; in yfs_deliver_fs_inline_bulk_status()
1902 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1903 afs_extract_to_tmp(call); in yfs_deliver_fs_inline_bulk_status()
1909 ret = afs_extract_data(call, true); in yfs_deliver_fs_inline_bulk_status()
1913 tmp = ntohl(call->tmp); in yfs_deliver_fs_inline_bulk_status()
1916 return afs_protocol_error(call, afs_eproto_ibulkst_cb_count); in yfs_deliver_fs_inline_bulk_status()
1917 call->count = 0; in yfs_deliver_fs_inline_bulk_status()
1918 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1920 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSCallBack)); in yfs_deliver_fs_inline_bulk_status()
1925 ret = afs_extract_data(call, true); in yfs_deliver_fs_inline_bulk_status()
1930 switch (call->count) { in yfs_deliver_fs_inline_bulk_status()
1938 scb = &op->more_files[call->count - 2].scb; in yfs_deliver_fs_inline_bulk_status()
1942 bp = call->buffer; in yfs_deliver_fs_inline_bulk_status()
1943 xdr_decode_YFSCallBack(&bp, call, scb); in yfs_deliver_fs_inline_bulk_status()
1944 call->count++; in yfs_deliver_fs_inline_bulk_status()
1945 if (call->count < op->nr_files) in yfs_deliver_fs_inline_bulk_status()
1948 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSVolSync)); in yfs_deliver_fs_inline_bulk_status()
1949 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1953 ret = afs_extract_data(call, false); in yfs_deliver_fs_inline_bulk_status()
1957 bp = call->buffer; in yfs_deliver_fs_inline_bulk_status()
1960 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1988 struct afs_call *call; in yfs_fs_inline_bulk_status() local
1995 call = afs_alloc_flat_call(op->net, &yfs_RXYFSInlineBulkStatus, in yfs_fs_inline_bulk_status()
2001 if (!call) in yfs_fs_inline_bulk_status()
2005 bp = call->request; in yfs_fs_inline_bulk_status()
2013 yfs_check_req(call, bp); in yfs_fs_inline_bulk_status()
2015 call->fid = vp->fid; in yfs_fs_inline_bulk_status()
2016 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_inline_bulk_status()
2017 afs_make_op_call(op, call, GFP_NOFS); in yfs_fs_inline_bulk_status()
2023 static int yfs_deliver_fs_fetch_opaque_acl(struct afs_call *call) in yfs_deliver_fs_fetch_opaque_acl() argument
2025 struct afs_operation *op = call->op; in yfs_deliver_fs_fetch_opaque_acl()
2033 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_fetch_opaque_acl()
2035 switch (call->unmarshall) { in yfs_deliver_fs_fetch_opaque_acl()
2037 afs_extract_to_tmp(call); in yfs_deliver_fs_fetch_opaque_acl()
2038 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2043 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_opaque_acl()
2047 size = call->count2 = ntohl(call->tmp); in yfs_deliver_fs_fetch_opaque_acl()
2055 acl->size = call->count2; in yfs_deliver_fs_fetch_opaque_acl()
2056 afs_extract_begin(call, acl->data, size); in yfs_deliver_fs_fetch_opaque_acl()
2058 afs_extract_discard(call, size); in yfs_deliver_fs_fetch_opaque_acl()
2060 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2065 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_opaque_acl()
2069 afs_extract_to_tmp(call); in yfs_deliver_fs_fetch_opaque_acl()
2070 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2075 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_opaque_acl()
2079 size = call->count2 = ntohl(call->tmp); in yfs_deliver_fs_fetch_opaque_acl()
2087 acl->size = call->count2; in yfs_deliver_fs_fetch_opaque_acl()
2088 afs_extract_begin(call, acl->data, size); in yfs_deliver_fs_fetch_opaque_acl()
2090 afs_extract_discard(call, size); in yfs_deliver_fs_fetch_opaque_acl()
2092 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2097 ret = afs_extract_data(call, true); in yfs_deliver_fs_fetch_opaque_acl()
2101 afs_extract_to_buf(call, in yfs_deliver_fs_fetch_opaque_acl()
2105 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2110 ret = afs_extract_data(call, false); in yfs_deliver_fs_fetch_opaque_acl()
2114 bp = call->buffer; in yfs_deliver_fs_fetch_opaque_acl()
2117 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_opaque_acl()
2120 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
2156 struct afs_call *call; in yfs_fs_fetch_opaque_acl() local
2162 call = afs_alloc_flat_call(op->net, &yfs_RXYFSFetchOpaqueACL, in yfs_fs_fetch_opaque_acl()
2168 if (!call) in yfs_fs_fetch_opaque_acl()
2172 bp = call->request; in yfs_fs_fetch_opaque_acl()
2176 yfs_check_req(call, bp); in yfs_fs_fetch_opaque_acl()
2178 call->fid = vp->fid; in yfs_fs_fetch_opaque_acl()
2179 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_fetch_opaque_acl()
2180 afs_make_op_call(op, call, GFP_KERNEL); in yfs_fs_fetch_opaque_acl()
2199 struct afs_call *call; in yfs_fs_store_opaque_acl2() local
2208 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreOpaqueACL2, in yfs_fs_store_opaque_acl2()
2214 if (!call) in yfs_fs_store_opaque_acl2()
2218 bp = call->request; in yfs_fs_store_opaque_acl2()
2227 yfs_check_req(call, bp); in yfs_fs_store_opaque_acl2()
2229 call->fid = vp->fid; in yfs_fs_store_opaque_acl2()
2230 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_store_opaque_acl2()
2231 afs_make_op_call(op, call, GFP_KERNEL); in yfs_fs_store_opaque_acl2()