Lines Matching refs:call
145 static void yfs_check_req(struct afs_call *call, __be32 *bp)
147 size_t len = (void *)bp - call->request;
149 if (len > call->request_size)
151 call->type->name, len, call->request_size);
152 else if (len < call->request_size)
154 call->type->name, len, call->request_size);
181 struct afs_call *call,
227 afs_protocol_error(call, afs_eproto_bad_status);
235 struct afs_call *call,
242 cb_expiry = ktime_add(call->issue_time, xdr_to_u64(x->expiration_time) * 100);
335 static int yfs_deliver_status_and_volsync(struct afs_call *call)
337 struct afs_operation *op = call->op;
341 ret = afs_transfer_reply(call);
345 bp = call->buffer;
346 xdr_decode_YFSFetchStatus(&bp, call, &op->file[0].scb);
356 static int yfs_deliver_fs_fetch_data64(struct afs_call *call)
358 struct afs_operation *op = call->op;
366 call->unmarshall, iov_iter_count(call->iter), req->actual_len);
368 switch (call->unmarshall) {
373 afs_extract_to_tmp64(call);
374 call->unmarshall++;
380 ret = afs_extract_data(call, true);
384 req->actual_len = be64_to_cpu(call->tmp64);
390 call->unmarshall++;
398 call->bvec[0].bv_len = size;
399 call->bvec[0].bv_offset = req->offset;
400 call->bvec[0].bv_page = req->pages[req->index];
401 iov_iter_bvec(&call->def_iter, READ, call->bvec, 1, size);
408 iov_iter_count(call->iter), req->remain);
410 ret = afs_extract_data(call, true);
413 req->remain -= call->bvec[0].bv_len;
414 req->offset += call->bvec[0].bv_len;
428 afs_extract_discard(call, req->actual_len - req->len);
429 call->unmarshall = 3;
434 iov_iter_count(call->iter), req->actual_len - req->len);
436 ret = afs_extract_data(call, true);
441 call->unmarshall = 4;
442 afs_extract_to_buf(call,
450 ret = afs_extract_data(call, false);
454 bp = call->buffer;
455 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb);
456 xdr_decode_YFSCallBack(&bp, call, &vp->scb);
462 call->unmarshall++;
501 struct afs_call *call;
508 call = afs_alloc_flat_call(op->net, &yfs_RXYFSFetchData64,
515 if (!call)
519 bp = call->request;
525 yfs_check_req(call, bp);
527 trace_afs_make_fs_call(call, &vp->fid);
528 afs_make_op_call(op, call, GFP_NOFS);
534 static int yfs_deliver_fs_create_vnode(struct afs_call *call)
536 struct afs_operation *op = call->op;
542 _enter("{%u}", call->unmarshall);
544 ret = afs_transfer_reply(call);
549 bp = call->buffer;
551 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb);
552 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb);
553 xdr_decode_YFSCallBack(&bp, call, &vp->scb);
577 struct afs_call *call;
595 call = afs_alloc_flat_call(op->net, &afs_RXFSCreateFile, reqsz, rplsz);
596 if (!call)
600 bp = call->request;
607 yfs_check_req(call, bp);
609 trace_afs_make_fs_call1(call, &dvp->fid, name);
610 afs_make_op_call(op, call, GFP_NOFS);
627 struct afs_call *call;
644 call = afs_alloc_flat_call(op->net, &yfs_RXFSMakeDir, reqsz, rplsz);
645 if (!call)
649 bp = call->request;
655 yfs_check_req(call, bp);
657 trace_afs_make_fs_call1(call, &dvp->fid, name);
658 afs_make_op_call(op, call, GFP_NOFS);
664 static int yfs_deliver_fs_remove_file2(struct afs_call *call)
666 struct afs_operation *op = call->op;
673 _enter("{%u}", call->unmarshall);
675 ret = afs_transfer_reply(call);
679 bp = call->buffer;
680 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb);
682 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb);
689 static void yfs_done_fs_remove_file2(struct afs_call *call)
691 if (call->error == -ECONNABORTED &&
692 call->abort_code == RX_INVALID_OPERATION) {
693 set_bit(AFS_SERVER_FL_NO_RM2, &call->server->flags);
694 call->op->flags |= AFS_OPERATION_DOWNGRADE;
716 struct afs_call *call;
721 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRemoveFile2,
730 if (!call)
734 bp = call->request;
739 yfs_check_req(call, bp);
741 trace_afs_make_fs_call1(call, &dvp->fid, name);
742 afs_make_op_call(op, call, GFP_NOFS);
748 static int yfs_deliver_fs_remove(struct afs_call *call)
750 struct afs_operation *op = call->op;
755 _enter("{%u}", call->unmarshall);
757 ret = afs_transfer_reply(call);
761 bp = call->buffer;
762 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb);
784 struct afs_call *call;
792 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRemoveFile,
799 if (!call)
803 bp = call->request;
808 yfs_check_req(call, bp);
810 trace_afs_make_fs_call1(call, &dvp->fid, name);
811 afs_make_op_call(op, call, GFP_NOFS);
828 struct afs_call *call;
833 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRemoveDir,
840 if (!call)
844 bp = call->request;
849 yfs_check_req(call, bp);
851 trace_afs_make_fs_call1(call, &dvp->fid, name);
852 afs_make_op_call(op, call, GFP_NOFS);
858 static int yfs_deliver_fs_link(struct afs_call *call)
860 struct afs_operation *op = call->op;
866 _enter("{%u}", call->unmarshall);
868 ret = afs_transfer_reply(call);
872 bp = call->buffer;
873 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb);
874 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb);
898 struct afs_call *call;
903 call = afs_alloc_flat_call(op->net, &yfs_RXYFSLink,
912 if (!call)
916 bp = call->request;
922 yfs_check_req(call, bp);
924 trace_afs_make_fs_call1(call, &vp->fid, name);
925 afs_make_op_call(op, call, GFP_NOFS);
931 static int yfs_deliver_fs_symlink(struct afs_call *call)
933 struct afs_operation *op = call->op;
939 _enter("{%u}", call->unmarshall);
941 ret = afs_transfer_reply(call);
946 bp = call->buffer;
948 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb);
949 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb);
973 struct afs_call *call;
980 call = afs_alloc_flat_call(op->net, &yfs_RXYFSSymlink,
991 if (!call)
995 bp = call->request;
1002 yfs_check_req(call, bp);
1004 trace_afs_make_fs_call1(call, &dvp->fid, name);
1005 afs_make_op_call(op, call, GFP_NOFS);
1011 static int yfs_deliver_fs_rename(struct afs_call *call)
1013 struct afs_operation *op = call->op;
1019 _enter("{%u}", call->unmarshall);
1021 ret = afs_transfer_reply(call);
1025 bp = call->buffer;
1029 xdr_decode_YFSFetchStatus(&bp, call, &orig_dvp->scb);
1030 xdr_decode_YFSFetchStatus(&bp, call, &new_dvp->scb);
1055 struct afs_call *call;
1060 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRename,
1070 if (!call)
1074 bp = call->request;
1081 yfs_check_req(call, bp);
1083 trace_afs_make_fs_call2(call, &orig_dvp->fid, orig_name, new_name);
1084 afs_make_op_call(op, call, GFP_NOFS);
1103 struct afs_call *call;
1124 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreData64,
1132 if (!call)
1135 call->key = op->key;
1136 call->send_pages = true;
1139 bp = call->request;
1147 yfs_check_req(call, bp);
1149 trace_afs_make_fs_call(call, &vp->fid);
1150 afs_make_op_call(op, call, GFP_NOFS);
1177 struct afs_call *call;
1184 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreData64_as_Status,
1191 if (!call)
1195 bp = call->request;
1203 yfs_check_req(call, bp);
1205 trace_afs_make_fs_call(call, &vp->fid);
1206 afs_make_op_call(op, call, GFP_NOFS);
1216 struct afs_call *call;
1226 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreStatus,
1232 if (!call)
1236 bp = call->request;
1241 yfs_check_req(call, bp);
1243 trace_afs_make_fs_call(call, &vp->fid);
1244 afs_make_op_call(op, call, GFP_NOFS);
1250 static int yfs_deliver_fs_get_volume_status(struct afs_call *call)
1252 struct afs_operation *op = call->op;
1258 _enter("{%u}", call->unmarshall);
1260 switch (call->unmarshall) {
1262 call->unmarshall++;
1263 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSFetchVolumeStatus));
1269 ret = afs_extract_data(call, true);
1273 bp = call->buffer;
1275 call->unmarshall++;
1276 afs_extract_to_tmp(call);
1281 ret = afs_extract_data(call, true);
1285 call->count = ntohl(call->tmp);
1286 _debug("volname length: %u", call->count);
1287 if (call->count >= AFSNAMEMAX)
1288 return afs_protocol_error(call, afs_eproto_volname_len);
1289 size = (call->count + 3) & ~3; /* It's padded */
1290 afs_extract_to_buf(call, size);
1291 call->unmarshall++;
1297 ret = afs_extract_data(call, true);
1301 p = call->buffer;
1302 p[call->count] = 0;
1304 afs_extract_to_tmp(call);
1305 call->unmarshall++;
1310 ret = afs_extract_data(call, true);
1314 call->count = ntohl(call->tmp);
1315 _debug("offline msg length: %u", call->count);
1316 if (call->count >= AFSNAMEMAX)
1317 return afs_protocol_error(call, afs_eproto_offline_msg_len);
1318 size = (call->count + 3) & ~3; /* It's padded */
1319 afs_extract_to_buf(call, size);
1320 call->unmarshall++;
1326 ret = afs_extract_data(call, true);
1330 p = call->buffer;
1331 p[call->count] = 0;
1334 afs_extract_to_tmp(call);
1335 call->unmarshall++;
1340 ret = afs_extract_data(call, true);
1344 call->count = ntohl(call->tmp);
1345 _debug("motd length: %u", call->count);
1346 if (call->count >= AFSNAMEMAX)
1347 return afs_protocol_error(call, afs_eproto_motd_len);
1348 size = (call->count + 3) & ~3; /* It's padded */
1349 afs_extract_to_buf(call, size);
1350 call->unmarshall++;
1356 ret = afs_extract_data(call, false);
1360 p = call->buffer;
1361 p[call->count] = 0;
1364 call->unmarshall++;
1391 struct afs_call *call;
1396 call = afs_alloc_flat_call(op->net, &yfs_RXYFSGetVolumeStatus,
1403 if (!call)
1407 bp = call->request;
1411 yfs_check_req(call, bp);
1413 trace_afs_make_fs_call(call, &vp->fid);
1414 afs_make_op_call(op, call, GFP_NOFS);
1455 struct afs_call *call;
1460 call = afs_alloc_flat_call(op->net, &yfs_RXYFSSetLock,
1466 if (!call)
1470 bp = call->request;
1475 yfs_check_req(call, bp);
1477 trace_afs_make_fs_calli(call, &vp->fid, op->lock.type);
1478 afs_make_op_call(op, call, GFP_NOFS);
1487 struct afs_call *call;
1492 call = afs_alloc_flat_call(op->net, &yfs_RXYFSExtendLock,
1497 if (!call)
1501 bp = call->request;
1505 yfs_check_req(call, bp);
1507 trace_afs_make_fs_call(call, &vp->fid);
1508 afs_make_op_call(op, call, GFP_NOFS);
1517 struct afs_call *call;
1522 call = afs_alloc_flat_call(op->net, &yfs_RXYFSReleaseLock,
1527 if (!call)
1531 bp = call->request;
1535 yfs_check_req(call, bp);
1537 trace_afs_make_fs_call(call, &vp->fid);
1538 afs_make_op_call(op, call, GFP_NOFS);
1544 static int yfs_deliver_fs_fetch_status(struct afs_call *call)
1546 struct afs_operation *op = call->op;
1551 ret = afs_transfer_reply(call);
1556 bp = call->buffer;
1557 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb);
1558 xdr_decode_YFSCallBack(&bp, call, &vp->scb);
1581 struct afs_call *call;
1587 call = afs_alloc_flat_call(op->net, &yfs_RXYFSFetchStatus,
1593 if (!call)
1597 bp = call->request;
1601 yfs_check_req(call, bp);
1603 trace_afs_make_fs_call(call, &vp->fid);
1604 afs_make_op_call(op, call, GFP_NOFS);
1608 * Deliver reply data to an YFS.InlineBulkStatus call
1610 static int yfs_deliver_fs_inline_bulk_status(struct afs_call *call)
1612 struct afs_operation *op = call->op;
1618 _enter("{%u}", call->unmarshall);
1620 switch (call->unmarshall) {
1622 afs_extract_to_tmp(call);
1623 call->unmarshall++;
1629 ret = afs_extract_data(call, true);
1633 tmp = ntohl(call->tmp);
1636 return afs_protocol_error(call, afs_eproto_ibulkst_count);
1638 call->count = 0;
1639 call->unmarshall++;
1641 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSFetchStatus));
1645 _debug("extract status array %u", call->count);
1646 ret = afs_extract_data(call, true);
1650 switch (call->count) {
1658 scb = &op->more_files[call->count - 2].scb;
1662 bp = call->buffer;
1663 xdr_decode_YFSFetchStatus(&bp, call, scb);
1665 call->count++;
1666 if (call->count < op->nr_files)
1669 call->count = 0;
1670 call->unmarshall++;
1671 afs_extract_to_tmp(call);
1677 ret = afs_extract_data(call, true);
1681 tmp = ntohl(call->tmp);
1684 return afs_protocol_error(call, afs_eproto_ibulkst_cb_count);
1685 call->count = 0;
1686 call->unmarshall++;
1688 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSCallBack));
1693 ret = afs_extract_data(call, true);
1698 switch (call->count) {
1706 scb = &op->more_files[call->count - 2].scb;
1710 bp = call->buffer;
1711 xdr_decode_YFSCallBack(&bp, call, scb);
1712 call->count++;
1713 if (call->count < op->nr_files)
1716 afs_extract_to_buf(call, sizeof(struct yfs_xdr_YFSVolSync));
1717 call->unmarshall++;
1721 ret = afs_extract_data(call, false);
1725 bp = call->buffer;
1728 call->unmarshall++;
1756 struct afs_call *call;
1763 call = afs_alloc_flat_call(op->net, &yfs_RXYFSInlineBulkStatus,
1769 if (!call)
1773 bp = call->request;
1781 yfs_check_req(call, bp);
1783 trace_afs_make_fs_call(call, &vp->fid);
1784 afs_make_op_call(op, call, GFP_NOFS);
1790 static int yfs_deliver_fs_fetch_opaque_acl(struct afs_call *call)
1792 struct afs_operation *op = call->op;
1800 _enter("{%u}", call->unmarshall);
1802 switch (call->unmarshall) {
1804 afs_extract_to_tmp(call);
1805 call->unmarshall++;
1810 ret = afs_extract_data(call, true);
1814 size = call->count2 = ntohl(call->tmp);
1822 acl->size = call->count2;
1823 afs_extract_begin(call, acl->data, size);
1825 afs_extract_discard(call, size);
1827 call->unmarshall++;
1832 ret = afs_extract_data(call, true);
1836 afs_extract_to_tmp(call);
1837 call->unmarshall++;
1842 ret = afs_extract_data(call, true);
1846 size = call->count2 = ntohl(call->tmp);
1854 acl->size = call->count2;
1855 afs_extract_begin(call, acl->data, size);
1857 afs_extract_discard(call, size);
1859 call->unmarshall++;
1864 ret = afs_extract_data(call, true);
1868 afs_extract_to_buf(call,
1872 call->unmarshall++;
1877 ret = afs_extract_data(call, false);
1881 bp = call->buffer;
1884 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb);
1887 call->unmarshall++;
1923 struct afs_call *call;
1929 call = afs_alloc_flat_call(op->net, &yfs_RXYFSFetchOpaqueACL,
1935 if (!call)
1939 bp = call->request;
1943 yfs_check_req(call, bp);
1945 trace_afs_make_fs_call(call, &vp->fid);
1946 afs_make_op_call(op, call, GFP_KERNEL);
1965 struct afs_call *call;
1974 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreOpaqueACL2,
1980 if (!call)
1984 bp = call->request;
1993 yfs_check_req(call, bp);
1995 trace_afs_make_fs_call(call, &vp->fid);
1996 afs_make_op_call(op, call, GFP_KERNEL);