Lines Matching refs:task

61 static void	call_start(struct rpc_task *task);
62 static void call_reserve(struct rpc_task *task);
63 static void call_reserveresult(struct rpc_task *task);
64 static void call_allocate(struct rpc_task *task);
65 static void call_encode(struct rpc_task *task);
66 static void call_decode(struct rpc_task *task);
67 static void call_bind(struct rpc_task *task);
68 static void call_bind_status(struct rpc_task *task);
69 static void call_transmit(struct rpc_task *task);
70 static void call_status(struct rpc_task *task);
71 static void call_transmit_status(struct rpc_task *task);
72 static void call_refresh(struct rpc_task *task);
73 static void call_refreshresult(struct rpc_task *task);
74 static void call_connect(struct rpc_task *task);
75 static void call_connect_status(struct rpc_task *task);
77 static int rpc_encode_header(struct rpc_task *task,
79 static int rpc_decode_header(struct rpc_task *task,
82 static void rpc_check_timeout(struct rpc_task *task);
1011 void rpc_task_release_transport(struct rpc_task *task) in rpc_task_release_transport() argument
1013 struct rpc_xprt *xprt = task->tk_xprt; in rpc_task_release_transport()
1016 task->tk_xprt = NULL; in rpc_task_release_transport()
1017 if (task->tk_client) in rpc_task_release_transport()
1018 rpc_task_release_xprt(task->tk_client, xprt); in rpc_task_release_transport()
1025 void rpc_task_release_client(struct rpc_task *task) in rpc_task_release_client() argument
1027 struct rpc_clnt *clnt = task->tk_client; in rpc_task_release_client()
1029 rpc_task_release_transport(task); in rpc_task_release_client()
1033 list_del(&task->tk_task); in rpc_task_release_client()
1035 task->tk_client = NULL; in rpc_task_release_client()
1059 void rpc_task_set_transport(struct rpc_task *task, struct rpc_clnt *clnt) in rpc_task_set_transport() argument
1061 if (task->tk_xprt) in rpc_task_set_transport()
1063 if (task->tk_flags & RPC_TASK_NO_ROUND_ROBIN) in rpc_task_set_transport()
1064 task->tk_xprt = rpc_task_get_first_xprt(clnt); in rpc_task_set_transport()
1066 task->tk_xprt = rpc_task_get_next_xprt(clnt); in rpc_task_set_transport()
1070 void rpc_task_set_client(struct rpc_task *task, struct rpc_clnt *clnt) in rpc_task_set_client() argument
1074 rpc_task_set_transport(task, clnt); in rpc_task_set_client()
1075 task->tk_client = clnt; in rpc_task_set_client()
1078 task->tk_flags |= RPC_TASK_SOFT; in rpc_task_set_client()
1080 task->tk_flags |= RPC_TASK_TIMEOUT; in rpc_task_set_client()
1082 task->tk_flags |= RPC_TASK_NO_RETRANS_TIMEOUT; in rpc_task_set_client()
1084 task->tk_flags |= RPC_TASK_SWAPPER; in rpc_task_set_client()
1087 list_add_tail(&task->tk_task, &clnt->cl_tasks); in rpc_task_set_client()
1093 rpc_task_set_rpc_message(struct rpc_task *task, const struct rpc_message *msg) in rpc_task_set_rpc_message() argument
1096 task->tk_msg.rpc_proc = msg->rpc_proc; in rpc_task_set_rpc_message()
1097 task->tk_msg.rpc_argp = msg->rpc_argp; in rpc_task_set_rpc_message()
1098 task->tk_msg.rpc_resp = msg->rpc_resp; in rpc_task_set_rpc_message()
1100 task->tk_msg.rpc_cred = get_cred(msg->rpc_cred); in rpc_task_set_rpc_message()
1108 rpc_default_callback(struct rpc_task *task, void *data) in rpc_default_callback() argument
1122 struct rpc_task *task; in rpc_run_task() local
1124 task = rpc_new_task(task_setup_data); in rpc_run_task()
1126 rpc_task_set_client(task, task_setup_data->rpc_client); in rpc_run_task()
1127 rpc_task_set_rpc_message(task, task_setup_data->rpc_message); in rpc_run_task()
1129 if (task->tk_action == NULL) in rpc_run_task()
1130 rpc_call_start(task); in rpc_run_task()
1132 atomic_inc(&task->tk_count); in rpc_run_task()
1133 rpc_execute(task); in rpc_run_task()
1134 return task; in rpc_run_task()
1146 struct rpc_task *task; in rpc_call_sync() local
1162 task = rpc_run_task(&task_setup_data); in rpc_call_sync()
1163 if (IS_ERR(task)) in rpc_call_sync()
1164 return PTR_ERR(task); in rpc_call_sync()
1165 status = task->tk_status; in rpc_call_sync()
1166 rpc_put_task(task); in rpc_call_sync()
1183 struct rpc_task *task; in rpc_call_async() local
1192 task = rpc_run_task(&task_setup_data); in rpc_call_async()
1193 if (IS_ERR(task)) in rpc_call_async()
1194 return PTR_ERR(task); in rpc_call_async()
1195 rpc_put_task(task); in rpc_call_async()
1201 static void call_bc_encode(struct rpc_task *task);
1210 struct rpc_task *task; in rpc_run_bc_task() local
1221 task = rpc_new_task(&task_setup_data); in rpc_run_bc_task()
1222 xprt_init_bc_request(req, task); in rpc_run_bc_task()
1224 task->tk_action = call_bc_encode; in rpc_run_bc_task()
1225 atomic_inc(&task->tk_count); in rpc_run_bc_task()
1226 WARN_ON_ONCE(atomic_read(&task->tk_count) != 2); in rpc_run_bc_task()
1227 rpc_execute(task); in rpc_run_bc_task()
1229 dprintk("RPC: rpc_run_bc_task: task= %p\n", task); in rpc_run_bc_task()
1230 return task; in rpc_run_bc_task()
1258 rpc_call_start(struct rpc_task *task) in rpc_call_start() argument
1260 task->tk_action = call_start; in rpc_call_start()
1558 __rpc_restart_call(struct rpc_task *task, void (*action)(struct rpc_task *)) in __rpc_restart_call() argument
1560 task->tk_status = 0; in __rpc_restart_call()
1561 task->tk_rpc_status = 0; in __rpc_restart_call()
1562 task->tk_action = action; in __rpc_restart_call()
1571 rpc_restart_call(struct rpc_task *task) in rpc_restart_call() argument
1573 return __rpc_restart_call(task, call_start); in rpc_restart_call()
1582 rpc_restart_call_prepare(struct rpc_task *task) in rpc_restart_call_prepare() argument
1584 if (task->tk_ops->rpc_call_prepare != NULL) in rpc_restart_call_prepare()
1585 return __rpc_restart_call(task, rpc_prepare_task); in rpc_restart_call_prepare()
1586 return rpc_restart_call(task); in rpc_restart_call_prepare()
1591 *rpc_proc_name(const struct rpc_task *task) in rpc_proc_name() argument
1593 const struct rpc_procinfo *proc = task->tk_msg.rpc_proc; in rpc_proc_name()
1605 __rpc_call_rpcerror(struct rpc_task *task, int tk_status, int rpc_status) in __rpc_call_rpcerror() argument
1607 task->tk_rpc_status = rpc_status; in __rpc_call_rpcerror()
1608 rpc_exit(task, tk_status); in __rpc_call_rpcerror()
1612 rpc_call_rpcerror(struct rpc_task *task, int status) in rpc_call_rpcerror() argument
1614 __rpc_call_rpcerror(task, status, status); in rpc_call_rpcerror()
1624 call_start(struct rpc_task *task) in call_start() argument
1626 struct rpc_clnt *clnt = task->tk_client; in call_start()
1627 int idx = task->tk_msg.rpc_proc->p_statidx; in call_start()
1629 trace_rpc_request(task); in call_start()
1630 dprintk("RPC: %5u call_start %s%d proc %s (%s)\n", task->tk_pid, in call_start()
1632 rpc_proc_name(task), in call_start()
1633 (RPC_IS_ASYNC(task) ? "async" : "sync")); in call_start()
1639 task->tk_action = call_reserve; in call_start()
1640 rpc_task_set_transport(task, clnt); in call_start()
1647 call_reserve(struct rpc_task *task) in call_reserve() argument
1649 dprint_status(task); in call_reserve()
1651 task->tk_status = 0; in call_reserve()
1652 task->tk_action = call_reserveresult; in call_reserve()
1653 xprt_reserve(task); in call_reserve()
1656 static void call_retry_reserve(struct rpc_task *task);
1662 call_reserveresult(struct rpc_task *task) in call_reserveresult() argument
1664 int status = task->tk_status; in call_reserveresult()
1666 dprint_status(task); in call_reserveresult()
1672 task->tk_status = 0; in call_reserveresult()
1674 if (task->tk_rqstp) { in call_reserveresult()
1675 task->tk_action = call_refresh; in call_reserveresult()
1681 rpc_call_rpcerror(task, -EIO); in call_reserveresult()
1689 if (task->tk_rqstp) { in call_reserveresult()
1692 xprt_release(task); in call_reserveresult()
1697 rpc_delay(task, HZ >> 2); in call_reserveresult()
1700 task->tk_action = call_retry_reserve; in call_reserveresult()
1709 rpc_call_rpcerror(task, status); in call_reserveresult()
1716 call_retry_reserve(struct rpc_task *task) in call_retry_reserve() argument
1718 dprint_status(task); in call_retry_reserve()
1720 task->tk_status = 0; in call_retry_reserve()
1721 task->tk_action = call_reserveresult; in call_retry_reserve()
1722 xprt_retry_reserve(task); in call_retry_reserve()
1729 call_refresh(struct rpc_task *task) in call_refresh() argument
1731 dprint_status(task); in call_refresh()
1733 task->tk_action = call_refreshresult; in call_refresh()
1734 task->tk_status = 0; in call_refresh()
1735 task->tk_client->cl_stats->rpcauthrefresh++; in call_refresh()
1736 rpcauth_refreshcred(task); in call_refresh()
1743 call_refreshresult(struct rpc_task *task) in call_refreshresult() argument
1745 int status = task->tk_status; in call_refreshresult()
1747 dprint_status(task); in call_refreshresult()
1749 task->tk_status = 0; in call_refreshresult()
1750 task->tk_action = call_refresh; in call_refreshresult()
1753 if (rpcauth_uptodatecred(task)) { in call_refreshresult()
1754 task->tk_action = call_allocate; in call_refreshresult()
1762 rpc_delay(task, 3*HZ); in call_refreshresult()
1768 if (!task->tk_cred_retry) in call_refreshresult()
1770 task->tk_cred_retry--; in call_refreshresult()
1772 task->tk_pid, __func__); in call_refreshresult()
1776 task->tk_pid, __func__, status); in call_refreshresult()
1777 rpc_call_rpcerror(task, status); in call_refreshresult()
1785 call_allocate(struct rpc_task *task) in call_allocate() argument
1787 const struct rpc_auth *auth = task->tk_rqstp->rq_cred->cr_auth; in call_allocate()
1788 struct rpc_rqst *req = task->tk_rqstp; in call_allocate()
1790 const struct rpc_procinfo *proc = task->tk_msg.rpc_proc; in call_allocate()
1793 dprint_status(task); in call_allocate()
1795 task->tk_status = 0; in call_allocate()
1796 task->tk_action = call_encode; in call_allocate()
1823 status = xprt->ops->buf_alloc(task); in call_allocate()
1828 rpc_call_rpcerror(task, status); in call_allocate()
1832 dprintk("RPC: %5u rpc_buffer allocation failed\n", task->tk_pid); in call_allocate()
1834 if (RPC_IS_ASYNC(task) || !fatal_signal_pending(current)) { in call_allocate()
1835 task->tk_action = call_allocate; in call_allocate()
1836 rpc_delay(task, HZ>>4); in call_allocate()
1840 rpc_call_rpcerror(task, -ERESTARTSYS); in call_allocate()
1844 rpc_task_need_encode(struct rpc_task *task) in rpc_task_need_encode() argument
1846 return test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate) == 0 && in rpc_task_need_encode()
1847 (!(task->tk_flags & RPC_TASK_SENT) || in rpc_task_need_encode()
1848 !(task->tk_flags & RPC_TASK_NO_RETRANS_TIMEOUT) || in rpc_task_need_encode()
1849 xprt_request_need_retransmit(task)); in rpc_task_need_encode()
1853 rpc_xdr_encode(struct rpc_task *task) in rpc_xdr_encode() argument
1855 struct rpc_rqst *req = task->tk_rqstp; in rpc_xdr_encode()
1870 if (rpc_encode_header(task, &xdr)) in rpc_xdr_encode()
1873 task->tk_status = rpcauth_wrap_req(task, &xdr); in rpc_xdr_encode()
1880 call_encode(struct rpc_task *task) in call_encode() argument
1882 if (!rpc_task_need_encode(task)) in call_encode()
1884 dprint_status(task); in call_encode()
1886 xprt_request_dequeue_xprt(task); in call_encode()
1888 rpc_xdr_encode(task); in call_encode()
1890 if (task->tk_status != 0) { in call_encode()
1892 switch (task->tk_status) { in call_encode()
1895 rpc_delay(task, HZ >> 4); in call_encode()
1898 if (!task->tk_cred_retry) { in call_encode()
1899 rpc_exit(task, task->tk_status); in call_encode()
1901 task->tk_action = call_refresh; in call_encode()
1902 task->tk_cred_retry--; in call_encode()
1904 task->tk_pid, __func__); in call_encode()
1908 rpc_call_rpcerror(task, task->tk_status); in call_encode()
1914 if (rpc_reply_expected(task)) in call_encode()
1915 xprt_request_enqueue_receive(task); in call_encode()
1916 xprt_request_enqueue_transmit(task); in call_encode()
1918 task->tk_action = call_transmit; in call_encode()
1920 if (!xprt_bound(task->tk_xprt)) in call_encode()
1921 task->tk_action = call_bind; in call_encode()
1922 else if (!xprt_connected(task->tk_xprt)) in call_encode()
1923 task->tk_action = call_connect; in call_encode()
1931 rpc_task_transmitted(struct rpc_task *task) in rpc_task_transmitted() argument
1933 return !test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate); in rpc_task_transmitted()
1937 rpc_task_handle_transmitted(struct rpc_task *task) in rpc_task_handle_transmitted() argument
1939 xprt_end_transmit(task); in rpc_task_handle_transmitted()
1940 task->tk_action = call_transmit_status; in rpc_task_handle_transmitted()
1947 call_bind(struct rpc_task *task) in call_bind() argument
1949 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_bind()
1951 if (rpc_task_transmitted(task)) { in call_bind()
1952 rpc_task_handle_transmitted(task); in call_bind()
1957 task->tk_action = call_connect; in call_bind()
1961 dprint_status(task); in call_bind()
1963 task->tk_action = call_bind_status; in call_bind()
1964 if (!xprt_prepare_transmit(task)) in call_bind()
1967 xprt->ops->rpcbind(task); in call_bind()
1974 call_bind_status(struct rpc_task *task) in call_bind_status() argument
1976 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_bind_status()
1979 if (rpc_task_transmitted(task)) { in call_bind_status()
1980 rpc_task_handle_transmitted(task); in call_bind_status()
1984 dprint_status(task); in call_bind_status()
1985 trace_rpc_bind_status(task); in call_bind_status()
1986 if (task->tk_status >= 0) in call_bind_status()
1989 task->tk_status = 0; in call_bind_status()
1993 switch (task->tk_status) { in call_bind_status()
1995 dprintk("RPC: %5u rpcbind out of memory\n", task->tk_pid); in call_bind_status()
1996 rpc_delay(task, HZ >> 2); in call_bind_status()
2000 "unavailable\n", task->tk_pid); in call_bind_status()
2002 if (task->tk_msg.rpc_proc->p_proc == 0) { in call_bind_status()
2006 if (task->tk_rebind_retry == 0) in call_bind_status()
2008 task->tk_rebind_retry--; in call_bind_status()
2009 rpc_delay(task, 3*HZ); in call_bind_status()
2012 rpc_delay(task, HZ >> 2); in call_bind_status()
2018 task->tk_pid); in call_bind_status()
2023 task->tk_pid); in call_bind_status()
2027 task->tk_pid); in call_bind_status()
2039 task->tk_pid, task->tk_status); in call_bind_status()
2040 if (!RPC_IS_SOFTCONN(task)) { in call_bind_status()
2041 rpc_delay(task, 5*HZ); in call_bind_status()
2044 status = task->tk_status; in call_bind_status()
2048 task->tk_pid, -task->tk_status); in call_bind_status()
2051 rpc_call_rpcerror(task, status); in call_bind_status()
2054 task->tk_action = call_connect; in call_bind_status()
2057 task->tk_status = 0; in call_bind_status()
2058 task->tk_action = call_bind; in call_bind_status()
2059 rpc_check_timeout(task); in call_bind_status()
2066 call_connect(struct rpc_task *task) in call_connect() argument
2068 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_connect()
2070 if (rpc_task_transmitted(task)) { in call_connect()
2071 rpc_task_handle_transmitted(task); in call_connect()
2076 task->tk_action = call_transmit; in call_connect()
2081 task->tk_pid, xprt, in call_connect()
2084 task->tk_action = call_connect_status; in call_connect()
2085 if (task->tk_status < 0) in call_connect()
2087 if (task->tk_flags & RPC_TASK_NOCONNECT) { in call_connect()
2088 rpc_call_rpcerror(task, -ENOTCONN); in call_connect()
2091 if (!xprt_prepare_transmit(task)) in call_connect()
2093 xprt_connect(task); in call_connect()
2100 call_connect_status(struct rpc_task *task) in call_connect_status() argument
2102 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_connect_status()
2103 struct rpc_clnt *clnt = task->tk_client; in call_connect_status()
2104 int status = task->tk_status; in call_connect_status()
2106 if (rpc_task_transmitted(task)) { in call_connect_status()
2107 rpc_task_handle_transmitted(task); in call_connect_status()
2111 dprint_status(task); in call_connect_status()
2112 trace_rpc_connect_status(task); in call_connect_status()
2114 if (task->tk_status == 0) { in call_connect_status()
2119 task->tk_status = 0; in call_connect_status()
2123 task->tk_status = 0; in call_connect_status()
2127 if (RPC_IS_SOFTCONN(task)) in call_connect_status()
2140 xprt_conditional_disconnect(task->tk_rqstp->rq_xprt, in call_connect_status()
2141 task->tk_rqstp->rq_connect_cookie); in call_connect_status()
2142 if (RPC_IS_SOFTCONN(task)) in call_connect_status()
2145 rpc_delay(task, 3*HZ); in call_connect_status()
2153 rpc_delay(task, HZ >> 2); in call_connect_status()
2156 rpc_call_rpcerror(task, status); in call_connect_status()
2159 task->tk_action = call_transmit; in call_connect_status()
2163 task->tk_action = call_bind; in call_connect_status()
2164 rpc_check_timeout(task); in call_connect_status()
2171 call_transmit(struct rpc_task *task) in call_transmit() argument
2173 if (rpc_task_transmitted(task)) { in call_transmit()
2174 rpc_task_handle_transmitted(task); in call_transmit()
2178 dprint_status(task); in call_transmit()
2180 task->tk_action = call_transmit_status; in call_transmit()
2181 if (!xprt_prepare_transmit(task)) in call_transmit()
2183 task->tk_status = 0; in call_transmit()
2184 if (test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate)) { in call_transmit()
2185 if (!xprt_connected(task->tk_xprt)) { in call_transmit()
2186 task->tk_status = -ENOTCONN; in call_transmit()
2189 xprt_transmit(task); in call_transmit()
2191 xprt_end_transmit(task); in call_transmit()
2198 call_transmit_status(struct rpc_task *task) in call_transmit_status() argument
2200 task->tk_action = call_status; in call_transmit_status()
2206 if (rpc_task_transmitted(task)) { in call_transmit_status()
2207 task->tk_status = 0; in call_transmit_status()
2208 xprt_request_wait_receive(task); in call_transmit_status()
2212 switch (task->tk_status) { in call_transmit_status()
2214 dprint_status(task); in call_transmit_status()
2217 task->tk_status = 0; in call_transmit_status()
2218 task->tk_action = call_encode; in call_transmit_status()
2227 rpc_delay(task, HZ>>2); in call_transmit_status()
2231 task->tk_action = call_transmit; in call_transmit_status()
2232 task->tk_status = 0; in call_transmit_status()
2240 if (RPC_IS_SOFTCONN(task)) { in call_transmit_status()
2241 if (!task->tk_msg.rpc_proc->p_proc) in call_transmit_status()
2242 trace_xprt_ping(task->tk_xprt, in call_transmit_status()
2243 task->tk_status); in call_transmit_status()
2244 rpc_call_rpcerror(task, task->tk_status); in call_transmit_status()
2253 task->tk_action = call_bind; in call_transmit_status()
2254 task->tk_status = 0; in call_transmit_status()
2257 rpc_check_timeout(task); in call_transmit_status()
2261 static void call_bc_transmit(struct rpc_task *task);
2262 static void call_bc_transmit_status(struct rpc_task *task);
2265 call_bc_encode(struct rpc_task *task) in call_bc_encode() argument
2267 xprt_request_enqueue_transmit(task); in call_bc_encode()
2268 task->tk_action = call_bc_transmit; in call_bc_encode()
2276 call_bc_transmit(struct rpc_task *task) in call_bc_transmit() argument
2278 task->tk_action = call_bc_transmit_status; in call_bc_transmit()
2279 if (test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate)) { in call_bc_transmit()
2280 if (!xprt_prepare_transmit(task)) in call_bc_transmit()
2282 task->tk_status = 0; in call_bc_transmit()
2283 xprt_transmit(task); in call_bc_transmit()
2285 xprt_end_transmit(task); in call_bc_transmit()
2289 call_bc_transmit_status(struct rpc_task *task) in call_bc_transmit_status() argument
2291 struct rpc_rqst *req = task->tk_rqstp; in call_bc_transmit_status()
2293 if (rpc_task_transmitted(task)) in call_bc_transmit_status()
2294 task->tk_status = 0; in call_bc_transmit_status()
2296 dprint_status(task); in call_bc_transmit_status()
2298 switch (task->tk_status) { in call_bc_transmit_status()
2312 rpc_delay(task, HZ>>2); in call_bc_transmit_status()
2316 task->tk_status = 0; in call_bc_transmit_status()
2317 task->tk_action = call_bc_transmit; in call_bc_transmit_status()
2328 "error: %d\n", task->tk_status); in call_bc_transmit_status()
2338 "error: %d\n", task->tk_status); in call_bc_transmit_status()
2341 task->tk_action = rpc_exit_task; in call_bc_transmit_status()
2349 call_status(struct rpc_task *task) in call_status() argument
2351 struct rpc_clnt *clnt = task->tk_client; in call_status()
2354 if (!task->tk_msg.rpc_proc->p_proc) in call_status()
2355 trace_xprt_ping(task->tk_xprt, task->tk_status); in call_status()
2357 dprint_status(task); in call_status()
2359 status = task->tk_status; in call_status()
2361 task->tk_action = call_decode; in call_status()
2365 trace_rpc_call_status(task); in call_status()
2366 task->tk_status = 0; in call_status()
2373 if (RPC_IS_SOFTCONN(task)) in call_status()
2379 rpc_delay(task, 3*HZ); in call_status()
2390 rpc_delay(task, 3*HZ); in call_status()
2404 task->tk_action = call_encode; in call_status()
2405 rpc_check_timeout(task); in call_status()
2408 rpc_call_rpcerror(task, status); in call_status()
2421 rpc_check_timeout(struct rpc_task *task) in rpc_check_timeout() argument
2423 struct rpc_clnt *clnt = task->tk_client; in rpc_check_timeout()
2425 if (xprt_adjust_timeout(task->tk_rqstp) == 0) in rpc_check_timeout()
2428 dprintk("RPC: %5u call_timeout (major)\n", task->tk_pid); in rpc_check_timeout()
2429 task->tk_timeouts++; in rpc_check_timeout()
2431 if (RPC_IS_SOFTCONN(task) && !rpc_check_connected(task->tk_rqstp)) { in rpc_check_timeout()
2432 rpc_call_rpcerror(task, -ETIMEDOUT); in rpc_check_timeout()
2436 if (RPC_IS_SOFT(task)) { in rpc_check_timeout()
2442 if ((task->tk_flags & RPC_TASK_NO_RETRANS_TIMEOUT) && in rpc_check_timeout()
2443 rpc_check_connected(task->tk_rqstp)) in rpc_check_timeout()
2450 task->tk_xprt->servername); in rpc_check_timeout()
2452 if (task->tk_flags & RPC_TASK_TIMEOUT) in rpc_check_timeout()
2453 rpc_call_rpcerror(task, -ETIMEDOUT); in rpc_check_timeout()
2455 __rpc_call_rpcerror(task, -EIO, -ETIMEDOUT); in rpc_check_timeout()
2459 if (!(task->tk_flags & RPC_CALL_MAJORSEEN)) { in rpc_check_timeout()
2460 task->tk_flags |= RPC_CALL_MAJORSEEN; in rpc_check_timeout()
2465 task->tk_xprt->servername); in rpc_check_timeout()
2473 rpcauth_invalcred(task); in rpc_check_timeout()
2480 call_decode(struct rpc_task *task) in call_decode() argument
2482 struct rpc_clnt *clnt = task->tk_client; in call_decode()
2483 struct rpc_rqst *req = task->tk_rqstp; in call_decode()
2487 dprint_status(task); in call_decode()
2489 if (!task->tk_msg.rpc_proc->p_decode) { in call_decode()
2490 task->tk_action = rpc_exit_task; in call_decode()
2494 if (task->tk_flags & RPC_CALL_MAJORSEEN) { in call_decode()
2498 task->tk_xprt->servername); in call_decode()
2500 task->tk_flags &= ~RPC_CALL_MAJORSEEN; in call_decode()
2525 err = rpc_decode_header(task, &xdr); in call_decode()
2529 task->tk_action = rpc_exit_task; in call_decode()
2530 task->tk_status = rpcauth_unwrap_resp(task, &xdr); in call_decode()
2532 task->tk_pid, __func__, task->tk_status); in call_decode()
2535 task->tk_status = 0; in call_decode()
2536 if (task->tk_client->cl_discrtry) in call_decode()
2539 task->tk_action = call_encode; in call_decode()
2540 rpc_check_timeout(task); in call_decode()
2543 task->tk_action = call_reserve; in call_decode()
2544 rpc_check_timeout(task); in call_decode()
2545 rpcauth_invalcred(task); in call_decode()
2547 xprt_release(task); in call_decode()
2552 rpc_encode_header(struct rpc_task *task, struct xdr_stream *xdr) in rpc_encode_header() argument
2554 struct rpc_clnt *clnt = task->tk_client; in rpc_encode_header()
2555 struct rpc_rqst *req = task->tk_rqstp; in rpc_encode_header()
2568 *p = cpu_to_be32(task->tk_msg.rpc_proc->p_proc); in rpc_encode_header()
2570 error = rpcauth_marshcred(task, xdr); in rpc_encode_header()
2575 trace_rpc_bad_callhdr(task); in rpc_encode_header()
2576 rpc_call_rpcerror(task, error); in rpc_encode_header()
2581 rpc_decode_header(struct rpc_task *task, struct xdr_stream *xdr) in rpc_decode_header() argument
2583 struct rpc_clnt *clnt = task->tk_client; in rpc_decode_header()
2592 if (task->tk_rqstp->rq_rcv_buf.len & 3) in rpc_decode_header()
2604 error = rpcauth_checkverf(task, xdr); in rpc_decode_header()
2615 trace_rpc__prog_unavail(task); in rpc_decode_header()
2619 trace_rpc__prog_mismatch(task); in rpc_decode_header()
2623 trace_rpc__proc_unavail(task); in rpc_decode_header()
2628 trace_rpc__garbage_args(task); in rpc_decode_header()
2637 if (task->tk_garb_retry) { in rpc_decode_header()
2638 task->tk_garb_retry--; in rpc_decode_header()
2639 task->tk_action = call_encode; in rpc_decode_header()
2643 rpc_call_rpcerror(task, error); in rpc_decode_header()
2647 trace_rpc__unparsable(task); in rpc_decode_header()
2652 trace_rpc_bad_verifier(task); in rpc_decode_header()
2664 trace_rpc__mismatch(task); in rpc_decode_header()
2679 if (!task->tk_cred_retry) in rpc_decode_header()
2681 task->tk_cred_retry--; in rpc_decode_header()
2682 trace_rpc__stale_creds(task); in rpc_decode_header()
2687 if (!task->tk_garb_retry) in rpc_decode_header()
2689 task->tk_garb_retry--; in rpc_decode_header()
2690 trace_rpc__bad_creds(task); in rpc_decode_header()
2691 task->tk_action = call_encode; in rpc_decode_header()
2694 trace_rpc__auth_tooweak(task); in rpc_decode_header()
2696 task->tk_xprt->servername); in rpc_decode_header()
2763 static void rpc_cb_add_xprt_done(struct rpc_task *task, void *calldata) in rpc_cb_add_xprt_done() argument
2767 if (task->tk_status == 0) in rpc_cb_add_xprt_done()
2797 struct rpc_task *task; in rpc_clnt_test_and_add_xprt() local
2809 task = rpc_call_null_helper(clnt, xprt, NULL, in rpc_clnt_test_and_add_xprt()
2812 if (IS_ERR(task)) in rpc_clnt_test_and_add_xprt()
2813 return PTR_ERR(task); in rpc_clnt_test_and_add_xprt()
2814 rpc_put_task(task); in rpc_clnt_test_and_add_xprt()
2843 struct rpc_task *task; in rpc_clnt_setup_test_and_add_xprt() local
2854 task = rpc_call_null_helper(clnt, xprt, NULL, in rpc_clnt_setup_test_and_add_xprt()
2857 if (IS_ERR(task)) { in rpc_clnt_setup_test_and_add_xprt()
2858 status = PTR_ERR(task); in rpc_clnt_setup_test_and_add_xprt()
2861 status = task->tk_status; in rpc_clnt_setup_test_and_add_xprt()
2862 rpc_put_task(task); in rpc_clnt_setup_test_and_add_xprt()
3024 const struct rpc_task *task) in rpc_show_task() argument
3028 if (RPC_IS_QUEUED(task)) in rpc_show_task()
3029 rpc_waitq = rpc_qname(task->tk_waitqueue); in rpc_show_task()
3032 task->tk_pid, task->tk_flags, task->tk_status, in rpc_show_task()
3033 clnt, task->tk_rqstp, rpc_task_timeout(task), task->tk_ops, in rpc_show_task()
3034 clnt->cl_program->name, clnt->cl_vers, rpc_proc_name(task), in rpc_show_task()
3035 task->tk_action, rpc_waitq); in rpc_show_task()
3041 struct rpc_task *task; in rpc_show_tasks() local
3048 list_for_each_entry(task, &clnt->cl_tasks, tk_task) { in rpc_show_tasks()
3053 rpc_show_task(clnt, task); in rpc_show_tasks()