Lines Matching refs:task
58 static void call_start(struct rpc_task *task);
59 static void call_reserve(struct rpc_task *task);
60 static void call_reserveresult(struct rpc_task *task);
61 static void call_allocate(struct rpc_task *task);
62 static void call_encode(struct rpc_task *task);
63 static void call_decode(struct rpc_task *task);
64 static void call_bind(struct rpc_task *task);
65 static void call_bind_status(struct rpc_task *task);
66 static void call_transmit(struct rpc_task *task);
67 static void call_status(struct rpc_task *task);
68 static void call_transmit_status(struct rpc_task *task);
69 static void call_refresh(struct rpc_task *task);
70 static void call_refreshresult(struct rpc_task *task);
71 static void call_connect(struct rpc_task *task);
72 static void call_connect_status(struct rpc_task *task);
74 static int rpc_encode_header(struct rpc_task *task,
76 static int rpc_decode_header(struct rpc_task *task,
80 static void rpc_check_timeout(struct rpc_task *task);
900 struct rpc_task *task; in rpc_cancel_tasks() local
909 list_for_each_entry(task, &clnt->cl_tasks, tk_task) { in rpc_cancel_tasks()
910 if (!RPC_IS_ACTIVATED(task)) in rpc_cancel_tasks()
912 if (!fnmatch(task, data)) in rpc_cancel_tasks()
914 rpc_task_try_cancel(task, error); in rpc_cancel_tasks()
1100 void rpc_task_release_transport(struct rpc_task *task) in rpc_task_release_transport() argument
1102 struct rpc_xprt *xprt = task->tk_xprt; in rpc_task_release_transport()
1105 task->tk_xprt = NULL; in rpc_task_release_transport()
1106 if (task->tk_client) in rpc_task_release_transport()
1107 rpc_task_release_xprt(task->tk_client, xprt); in rpc_task_release_transport()
1114 void rpc_task_release_client(struct rpc_task *task) in rpc_task_release_client() argument
1116 struct rpc_clnt *clnt = task->tk_client; in rpc_task_release_client()
1118 rpc_task_release_transport(task); in rpc_task_release_client()
1122 list_del(&task->tk_task); in rpc_task_release_client()
1124 task->tk_client = NULL; in rpc_task_release_client()
1148 void rpc_task_set_transport(struct rpc_task *task, struct rpc_clnt *clnt) in rpc_task_set_transport() argument
1150 if (task->tk_xprt) { in rpc_task_set_transport()
1151 if (!(test_bit(XPRT_OFFLINE, &task->tk_xprt->state) && in rpc_task_set_transport()
1152 (task->tk_flags & RPC_TASK_MOVEABLE))) in rpc_task_set_transport()
1154 xprt_release(task); in rpc_task_set_transport()
1155 xprt_put(task->tk_xprt); in rpc_task_set_transport()
1157 if (task->tk_flags & RPC_TASK_NO_ROUND_ROBIN) in rpc_task_set_transport()
1158 task->tk_xprt = rpc_task_get_first_xprt(clnt); in rpc_task_set_transport()
1160 task->tk_xprt = rpc_task_get_next_xprt(clnt); in rpc_task_set_transport()
1164 void rpc_task_set_client(struct rpc_task *task, struct rpc_clnt *clnt) in rpc_task_set_client() argument
1166 rpc_task_set_transport(task, clnt); in rpc_task_set_client()
1167 task->tk_client = clnt; in rpc_task_set_client()
1170 task->tk_flags |= RPC_TASK_SOFT; in rpc_task_set_client()
1172 task->tk_flags |= RPC_TASK_TIMEOUT; in rpc_task_set_client()
1174 task->tk_flags |= RPC_TASK_NO_RETRANS_TIMEOUT; in rpc_task_set_client()
1177 list_add_tail(&task->tk_task, &clnt->cl_tasks); in rpc_task_set_client()
1182 rpc_task_set_rpc_message(struct rpc_task *task, const struct rpc_message *msg) in rpc_task_set_rpc_message() argument
1185 task->tk_msg.rpc_proc = msg->rpc_proc; in rpc_task_set_rpc_message()
1186 task->tk_msg.rpc_argp = msg->rpc_argp; in rpc_task_set_rpc_message()
1187 task->tk_msg.rpc_resp = msg->rpc_resp; in rpc_task_set_rpc_message()
1188 task->tk_msg.rpc_cred = msg->rpc_cred; in rpc_task_set_rpc_message()
1189 if (!(task->tk_flags & RPC_TASK_CRED_NOREF)) in rpc_task_set_rpc_message()
1190 get_cred(task->tk_msg.rpc_cred); in rpc_task_set_rpc_message()
1198 rpc_default_callback(struct rpc_task *task, void *data) in rpc_default_callback() argument
1212 struct rpc_task *task; in rpc_run_task() local
1214 task = rpc_new_task(task_setup_data); in rpc_run_task()
1215 if (IS_ERR(task)) in rpc_run_task()
1216 return task; in rpc_run_task()
1218 if (!RPC_IS_ASYNC(task)) in rpc_run_task()
1219 task->tk_flags |= RPC_TASK_CRED_NOREF; in rpc_run_task()
1221 rpc_task_set_client(task, task_setup_data->rpc_client); in rpc_run_task()
1222 rpc_task_set_rpc_message(task, task_setup_data->rpc_message); in rpc_run_task()
1224 if (task->tk_action == NULL) in rpc_run_task()
1225 rpc_call_start(task); in rpc_run_task()
1227 atomic_inc(&task->tk_count); in rpc_run_task()
1228 rpc_execute(task); in rpc_run_task()
1229 return task; in rpc_run_task()
1241 struct rpc_task *task; in rpc_call_sync() local
1257 task = rpc_run_task(&task_setup_data); in rpc_call_sync()
1258 if (IS_ERR(task)) in rpc_call_sync()
1259 return PTR_ERR(task); in rpc_call_sync()
1260 status = task->tk_status; in rpc_call_sync()
1261 rpc_put_task(task); in rpc_call_sync()
1278 struct rpc_task *task; in rpc_call_async() local
1287 task = rpc_run_task(&task_setup_data); in rpc_call_async()
1288 if (IS_ERR(task)) in rpc_call_async()
1289 return PTR_ERR(task); in rpc_call_async()
1290 rpc_put_task(task); in rpc_call_async()
1296 static void call_bc_encode(struct rpc_task *task);
1305 struct rpc_task *task; in rpc_run_bc_task() local
1316 task = rpc_new_task(&task_setup_data); in rpc_run_bc_task()
1317 if (IS_ERR(task)) { in rpc_run_bc_task()
1319 return task; in rpc_run_bc_task()
1322 xprt_init_bc_request(req, task); in rpc_run_bc_task()
1324 task->tk_action = call_bc_encode; in rpc_run_bc_task()
1325 atomic_inc(&task->tk_count); in rpc_run_bc_task()
1326 WARN_ON_ONCE(atomic_read(&task->tk_count) != 2); in rpc_run_bc_task()
1327 rpc_execute(task); in rpc_run_bc_task()
1329 dprintk("RPC: rpc_run_bc_task: task= %p\n", task); in rpc_run_bc_task()
1330 return task; in rpc_run_bc_task()
1355 rpc_call_start(struct rpc_task *task) in rpc_call_start() argument
1357 task->tk_action = call_start; in rpc_call_start()
1655 __rpc_restart_call(struct rpc_task *task, void (*action)(struct rpc_task *)) in __rpc_restart_call() argument
1657 task->tk_status = 0; in __rpc_restart_call()
1658 task->tk_rpc_status = 0; in __rpc_restart_call()
1659 task->tk_action = action; in __rpc_restart_call()
1668 rpc_restart_call(struct rpc_task *task) in rpc_restart_call() argument
1670 return __rpc_restart_call(task, call_start); in rpc_restart_call()
1679 rpc_restart_call_prepare(struct rpc_task *task) in rpc_restart_call_prepare() argument
1681 if (task->tk_ops->rpc_call_prepare != NULL) in rpc_restart_call_prepare()
1682 return __rpc_restart_call(task, rpc_prepare_task); in rpc_restart_call_prepare()
1683 return rpc_restart_call(task); in rpc_restart_call_prepare()
1688 *rpc_proc_name(const struct rpc_task *task) in rpc_proc_name() argument
1690 const struct rpc_procinfo *proc = task->tk_msg.rpc_proc; in rpc_proc_name()
1702 __rpc_call_rpcerror(struct rpc_task *task, int tk_status, int rpc_status) in __rpc_call_rpcerror() argument
1704 trace_rpc_call_rpcerror(task, tk_status, rpc_status); in __rpc_call_rpcerror()
1705 rpc_task_set_rpc_status(task, rpc_status); in __rpc_call_rpcerror()
1706 rpc_exit(task, tk_status); in __rpc_call_rpcerror()
1710 rpc_call_rpcerror(struct rpc_task *task, int status) in rpc_call_rpcerror() argument
1712 __rpc_call_rpcerror(task, status, status); in rpc_call_rpcerror()
1722 call_start(struct rpc_task *task) in call_start() argument
1724 struct rpc_clnt *clnt = task->tk_client; in call_start()
1725 int idx = task->tk_msg.rpc_proc->p_statidx; in call_start()
1727 trace_rpc_request(task); in call_start()
1729 if (task->tk_client->cl_shutdown) { in call_start()
1730 rpc_call_rpcerror(task, -EIO); in call_start()
1738 task->tk_action = call_reserve; in call_start()
1739 rpc_task_set_transport(task, clnt); in call_start()
1746 call_reserve(struct rpc_task *task) in call_reserve() argument
1748 task->tk_status = 0; in call_reserve()
1749 task->tk_action = call_reserveresult; in call_reserve()
1750 xprt_reserve(task); in call_reserve()
1753 static void call_retry_reserve(struct rpc_task *task);
1759 call_reserveresult(struct rpc_task *task) in call_reserveresult() argument
1761 int status = task->tk_status; in call_reserveresult()
1767 task->tk_status = 0; in call_reserveresult()
1769 if (task->tk_rqstp) { in call_reserveresult()
1770 task->tk_action = call_refresh; in call_reserveresult()
1774 rpc_call_rpcerror(task, -EIO); in call_reserveresult()
1780 rpc_delay(task, HZ >> 2); in call_reserveresult()
1783 task->tk_action = call_retry_reserve; in call_reserveresult()
1786 rpc_call_rpcerror(task, status); in call_reserveresult()
1794 call_retry_reserve(struct rpc_task *task) in call_retry_reserve() argument
1796 task->tk_status = 0; in call_retry_reserve()
1797 task->tk_action = call_reserveresult; in call_retry_reserve()
1798 xprt_retry_reserve(task); in call_retry_reserve()
1805 call_refresh(struct rpc_task *task) in call_refresh() argument
1807 task->tk_action = call_refreshresult; in call_refresh()
1808 task->tk_status = 0; in call_refresh()
1809 task->tk_client->cl_stats->rpcauthrefresh++; in call_refresh()
1810 rpcauth_refreshcred(task); in call_refresh()
1817 call_refreshresult(struct rpc_task *task) in call_refreshresult() argument
1819 int status = task->tk_status; in call_refreshresult()
1821 task->tk_status = 0; in call_refreshresult()
1822 task->tk_action = call_refresh; in call_refreshresult()
1825 if (rpcauth_uptodatecred(task)) { in call_refreshresult()
1826 task->tk_action = call_allocate; in call_refreshresult()
1834 rpc_delay(task, 3*HZ); in call_refreshresult()
1840 if (!task->tk_cred_retry) in call_refreshresult()
1842 task->tk_cred_retry--; in call_refreshresult()
1843 trace_rpc_retry_refresh_status(task); in call_refreshresult()
1846 rpc_delay(task, HZ >> 4); in call_refreshresult()
1849 trace_rpc_refresh_status(task); in call_refreshresult()
1850 rpc_call_rpcerror(task, status); in call_refreshresult()
1858 call_allocate(struct rpc_task *task) in call_allocate() argument
1860 const struct rpc_auth *auth = task->tk_rqstp->rq_cred->cr_auth; in call_allocate()
1861 struct rpc_rqst *req = task->tk_rqstp; in call_allocate()
1863 const struct rpc_procinfo *proc = task->tk_msg.rpc_proc; in call_allocate()
1866 task->tk_status = 0; in call_allocate()
1867 task->tk_action = call_encode; in call_allocate()
1894 status = xprt->ops->buf_alloc(task); in call_allocate()
1895 trace_rpc_buf_alloc(task, status); in call_allocate()
1899 rpc_call_rpcerror(task, status); in call_allocate()
1903 if (RPC_IS_ASYNC(task) || !fatal_signal_pending(current)) { in call_allocate()
1904 task->tk_action = call_allocate; in call_allocate()
1905 rpc_delay(task, HZ>>4); in call_allocate()
1909 rpc_call_rpcerror(task, -ERESTARTSYS); in call_allocate()
1913 rpc_task_need_encode(struct rpc_task *task) in rpc_task_need_encode() argument
1915 return test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate) == 0 && in rpc_task_need_encode()
1916 (!(task->tk_flags & RPC_TASK_SENT) || in rpc_task_need_encode()
1917 !(task->tk_flags & RPC_TASK_NO_RETRANS_TIMEOUT) || in rpc_task_need_encode()
1918 xprt_request_need_retransmit(task)); in rpc_task_need_encode()
1922 rpc_xdr_encode(struct rpc_task *task) in rpc_xdr_encode() argument
1924 struct rpc_rqst *req = task->tk_rqstp; in rpc_xdr_encode()
1938 if (rpc_encode_header(task, &xdr)) in rpc_xdr_encode()
1941 task->tk_status = rpcauth_wrap_req(task, &xdr); in rpc_xdr_encode()
1948 call_encode(struct rpc_task *task) in call_encode() argument
1950 if (!rpc_task_need_encode(task)) in call_encode()
1954 xprt_request_dequeue_xprt(task); in call_encode()
1956 rpc_xdr_encode(task); in call_encode()
1958 if (task->tk_status == 0 && rpc_reply_expected(task)) in call_encode()
1959 task->tk_status = xprt_request_enqueue_receive(task); in call_encode()
1961 if (task->tk_status != 0) { in call_encode()
1963 switch (task->tk_status) { in call_encode()
1966 rpc_delay(task, HZ >> 4); in call_encode()
1969 if (!task->tk_cred_retry) { in call_encode()
1970 rpc_call_rpcerror(task, task->tk_status); in call_encode()
1972 task->tk_action = call_refresh; in call_encode()
1973 task->tk_cred_retry--; in call_encode()
1974 trace_rpc_retry_refresh_status(task); in call_encode()
1978 rpc_call_rpcerror(task, task->tk_status); in call_encode()
1983 xprt_request_enqueue_transmit(task); in call_encode()
1985 task->tk_action = call_transmit; in call_encode()
1987 if (!xprt_bound(task->tk_xprt)) in call_encode()
1988 task->tk_action = call_bind; in call_encode()
1989 else if (!xprt_connected(task->tk_xprt)) in call_encode()
1990 task->tk_action = call_connect; in call_encode()
1998 rpc_task_transmitted(struct rpc_task *task) in rpc_task_transmitted() argument
2000 return !test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate); in rpc_task_transmitted()
2004 rpc_task_handle_transmitted(struct rpc_task *task) in rpc_task_handle_transmitted() argument
2006 xprt_end_transmit(task); in rpc_task_handle_transmitted()
2007 task->tk_action = call_transmit_status; in rpc_task_handle_transmitted()
2014 call_bind(struct rpc_task *task) in call_bind() argument
2016 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_bind()
2018 if (rpc_task_transmitted(task)) { in call_bind()
2019 rpc_task_handle_transmitted(task); in call_bind()
2024 task->tk_action = call_connect; in call_bind()
2028 task->tk_action = call_bind_status; in call_bind()
2029 if (!xprt_prepare_transmit(task)) in call_bind()
2032 xprt->ops->rpcbind(task); in call_bind()
2039 call_bind_status(struct rpc_task *task) in call_bind_status() argument
2041 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_bind_status()
2044 if (rpc_task_transmitted(task)) { in call_bind_status()
2045 rpc_task_handle_transmitted(task); in call_bind_status()
2049 if (task->tk_status >= 0) in call_bind_status()
2052 task->tk_status = 0; in call_bind_status()
2056 switch (task->tk_status) { in call_bind_status()
2058 rpc_delay(task, HZ >> 2); in call_bind_status()
2061 trace_rpcb_prog_unavail_err(task); in call_bind_status()
2063 if (task->tk_msg.rpc_proc->p_proc == 0) { in call_bind_status()
2067 rpc_delay(task, 3*HZ); in call_bind_status()
2070 rpc_delay(task, HZ >> 2); in call_bind_status()
2075 trace_rpcb_timeout_err(task); in call_bind_status()
2079 trace_rpcb_bind_version_err(task); in call_bind_status()
2082 trace_rpcb_bind_version_err(task); in call_bind_status()
2093 trace_rpcb_unreachable_err(task); in call_bind_status()
2094 if (!RPC_IS_SOFTCONN(task)) { in call_bind_status()
2095 rpc_delay(task, 5*HZ); in call_bind_status()
2098 status = task->tk_status; in call_bind_status()
2101 trace_rpcb_unrecognized_err(task); in call_bind_status()
2104 rpc_call_rpcerror(task, status); in call_bind_status()
2107 task->tk_action = call_connect; in call_bind_status()
2110 task->tk_status = 0; in call_bind_status()
2111 task->tk_action = call_bind; in call_bind_status()
2112 rpc_check_timeout(task); in call_bind_status()
2119 call_connect(struct rpc_task *task) in call_connect() argument
2121 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_connect()
2123 if (rpc_task_transmitted(task)) { in call_connect()
2124 rpc_task_handle_transmitted(task); in call_connect()
2129 task->tk_action = call_transmit; in call_connect()
2133 task->tk_action = call_connect_status; in call_connect()
2134 if (task->tk_status < 0) in call_connect()
2136 if (task->tk_flags & RPC_TASK_NOCONNECT) { in call_connect()
2137 rpc_call_rpcerror(task, -ENOTCONN); in call_connect()
2140 if (!xprt_prepare_transmit(task)) in call_connect()
2142 xprt_connect(task); in call_connect()
2149 call_connect_status(struct rpc_task *task) in call_connect_status() argument
2151 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_connect_status()
2152 struct rpc_clnt *clnt = task->tk_client; in call_connect_status()
2153 int status = task->tk_status; in call_connect_status()
2155 if (rpc_task_transmitted(task)) { in call_connect_status()
2156 rpc_task_handle_transmitted(task); in call_connect_status()
2160 trace_rpc_connect_status(task); in call_connect_status()
2162 if (task->tk_status == 0) { in call_connect_status()
2167 task->tk_status = 0; in call_connect_status()
2171 task->tk_status = 0; in call_connect_status()
2175 if (RPC_IS_SOFTCONN(task)) in call_connect_status()
2189 xprt_conditional_disconnect(task->tk_rqstp->rq_xprt, in call_connect_status()
2190 task->tk_rqstp->rq_connect_cookie); in call_connect_status()
2191 if (RPC_IS_SOFTCONN(task)) in call_connect_status()
2194 rpc_delay(task, 3*HZ); in call_connect_status()
2200 if (!(task->tk_flags & RPC_TASK_NO_ROUND_ROBIN) && in call_connect_status()
2201 (task->tk_flags & RPC_TASK_MOVEABLE) && in call_connect_status()
2203 struct rpc_xprt *saved = task->tk_xprt; in call_connect_status()
2212 xprt_release(task); in call_connect_status()
2218 task->tk_xprt = NULL; in call_connect_status()
2219 task->tk_action = call_start; in call_connect_status()
2222 if (!task->tk_xprt) in call_connect_status()
2227 rpc_delay(task, HZ >> 2); in call_connect_status()
2230 rpc_call_rpcerror(task, status); in call_connect_status()
2233 task->tk_action = call_transmit; in call_connect_status()
2237 task->tk_action = call_bind; in call_connect_status()
2238 rpc_check_timeout(task); in call_connect_status()
2245 call_transmit(struct rpc_task *task) in call_transmit() argument
2247 if (rpc_task_transmitted(task)) { in call_transmit()
2248 rpc_task_handle_transmitted(task); in call_transmit()
2252 task->tk_action = call_transmit_status; in call_transmit()
2253 if (!xprt_prepare_transmit(task)) in call_transmit()
2255 task->tk_status = 0; in call_transmit()
2256 if (test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate)) { in call_transmit()
2257 if (!xprt_connected(task->tk_xprt)) { in call_transmit()
2258 task->tk_status = -ENOTCONN; in call_transmit()
2261 xprt_transmit(task); in call_transmit()
2263 xprt_end_transmit(task); in call_transmit()
2270 call_transmit_status(struct rpc_task *task) in call_transmit_status() argument
2272 task->tk_action = call_status; in call_transmit_status()
2278 if (rpc_task_transmitted(task)) { in call_transmit_status()
2279 task->tk_status = 0; in call_transmit_status()
2280 xprt_request_wait_receive(task); in call_transmit_status()
2284 switch (task->tk_status) { in call_transmit_status()
2288 task->tk_status = 0; in call_transmit_status()
2289 task->tk_action = call_encode; in call_transmit_status()
2299 rpc_delay(task, HZ>>2); in call_transmit_status()
2303 task->tk_action = call_transmit; in call_transmit_status()
2304 task->tk_status = 0; in call_transmit_status()
2312 if (RPC_IS_SOFTCONN(task)) { in call_transmit_status()
2313 if (!task->tk_msg.rpc_proc->p_proc) in call_transmit_status()
2314 trace_xprt_ping(task->tk_xprt, in call_transmit_status()
2315 task->tk_status); in call_transmit_status()
2316 rpc_call_rpcerror(task, task->tk_status); in call_transmit_status()
2325 task->tk_action = call_bind; in call_transmit_status()
2326 task->tk_status = 0; in call_transmit_status()
2329 rpc_check_timeout(task); in call_transmit_status()
2333 static void call_bc_transmit(struct rpc_task *task);
2334 static void call_bc_transmit_status(struct rpc_task *task);
2337 call_bc_encode(struct rpc_task *task) in call_bc_encode() argument
2339 xprt_request_enqueue_transmit(task); in call_bc_encode()
2340 task->tk_action = call_bc_transmit; in call_bc_encode()
2348 call_bc_transmit(struct rpc_task *task) in call_bc_transmit() argument
2350 task->tk_action = call_bc_transmit_status; in call_bc_transmit()
2351 if (test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate)) { in call_bc_transmit()
2352 if (!xprt_prepare_transmit(task)) in call_bc_transmit()
2354 task->tk_status = 0; in call_bc_transmit()
2355 xprt_transmit(task); in call_bc_transmit()
2357 xprt_end_transmit(task); in call_bc_transmit()
2361 call_bc_transmit_status(struct rpc_task *task) in call_bc_transmit_status() argument
2363 struct rpc_rqst *req = task->tk_rqstp; in call_bc_transmit_status()
2365 if (rpc_task_transmitted(task)) in call_bc_transmit_status()
2366 task->tk_status = 0; in call_bc_transmit_status()
2368 switch (task->tk_status) { in call_bc_transmit_status()
2383 rpc_delay(task, HZ>>2); in call_bc_transmit_status()
2387 task->tk_status = 0; in call_bc_transmit_status()
2388 task->tk_action = call_bc_transmit; in call_bc_transmit_status()
2399 "error: %d\n", task->tk_status); in call_bc_transmit_status()
2409 "error: %d\n", task->tk_status); in call_bc_transmit_status()
2412 task->tk_action = rpc_exit_task; in call_bc_transmit_status()
2420 call_status(struct rpc_task *task) in call_status() argument
2422 struct rpc_clnt *clnt = task->tk_client; in call_status()
2425 if (!task->tk_msg.rpc_proc->p_proc) in call_status()
2426 trace_xprt_ping(task->tk_xprt, task->tk_status); in call_status()
2428 status = task->tk_status; in call_status()
2430 task->tk_action = call_decode; in call_status()
2434 trace_rpc_call_status(task); in call_status()
2435 task->tk_status = 0; in call_status()
2442 if (RPC_IS_SOFTCONN(task)) in call_status()
2448 rpc_delay(task, 3*HZ); in call_status()
2459 rpc_delay(task, 3*HZ); in call_status()
2467 rpc_delay(task, HZ>>2); in call_status()
2478 task->tk_action = call_encode; in call_status()
2479 rpc_check_timeout(task); in call_status()
2482 rpc_call_rpcerror(task, status); in call_status()
2495 rpc_check_timeout(struct rpc_task *task) in rpc_check_timeout() argument
2497 struct rpc_clnt *clnt = task->tk_client; in rpc_check_timeout()
2499 if (RPC_SIGNALLED(task)) in rpc_check_timeout()
2502 if (xprt_adjust_timeout(task->tk_rqstp) == 0) in rpc_check_timeout()
2505 trace_rpc_timeout_status(task); in rpc_check_timeout()
2506 task->tk_timeouts++; in rpc_check_timeout()
2508 if (RPC_IS_SOFTCONN(task) && !rpc_check_connected(task->tk_rqstp)) { in rpc_check_timeout()
2509 rpc_call_rpcerror(task, -ETIMEDOUT); in rpc_check_timeout()
2513 if (RPC_IS_SOFT(task)) { in rpc_check_timeout()
2519 if ((task->tk_flags & RPC_TASK_NO_RETRANS_TIMEOUT) && in rpc_check_timeout()
2520 rpc_check_connected(task->tk_rqstp)) in rpc_check_timeout()
2527 task->tk_xprt->servername); in rpc_check_timeout()
2529 if (task->tk_flags & RPC_TASK_TIMEOUT) in rpc_check_timeout()
2530 rpc_call_rpcerror(task, -ETIMEDOUT); in rpc_check_timeout()
2532 __rpc_call_rpcerror(task, -EIO, -ETIMEDOUT); in rpc_check_timeout()
2536 if (!(task->tk_flags & RPC_CALL_MAJORSEEN)) { in rpc_check_timeout()
2537 task->tk_flags |= RPC_CALL_MAJORSEEN; in rpc_check_timeout()
2542 task->tk_xprt->servername); in rpc_check_timeout()
2550 rpcauth_invalcred(task); in rpc_check_timeout()
2557 call_decode(struct rpc_task *task) in call_decode() argument
2559 struct rpc_clnt *clnt = task->tk_client; in call_decode()
2560 struct rpc_rqst *req = task->tk_rqstp; in call_decode()
2564 if (!task->tk_msg.rpc_proc->p_decode) { in call_decode()
2565 task->tk_action = rpc_exit_task; in call_decode()
2569 if (task->tk_flags & RPC_CALL_MAJORSEEN) { in call_decode()
2573 task->tk_xprt->servername); in call_decode()
2575 task->tk_flags &= ~RPC_CALL_MAJORSEEN; in call_decode()
2592 trace_rpc_xdr_recvfrom(task, &req->rq_rcv_buf); in call_decode()
2600 err = rpc_decode_header(task, &xdr); in call_decode()
2604 task->tk_action = rpc_exit_task; in call_decode()
2605 task->tk_status = rpcauth_unwrap_resp(task, &xdr); in call_decode()
2609 task->tk_status = 0; in call_decode()
2610 if (task->tk_client->cl_discrtry) in call_decode()
2613 task->tk_action = call_encode; in call_decode()
2614 rpc_check_timeout(task); in call_decode()
2617 task->tk_action = call_reserve; in call_decode()
2618 rpc_check_timeout(task); in call_decode()
2619 rpcauth_invalcred(task); in call_decode()
2621 xprt_release(task); in call_decode()
2626 rpc_encode_header(struct rpc_task *task, struct xdr_stream *xdr) in rpc_encode_header() argument
2628 struct rpc_clnt *clnt = task->tk_client; in rpc_encode_header()
2629 struct rpc_rqst *req = task->tk_rqstp; in rpc_encode_header()
2642 *p = cpu_to_be32(task->tk_msg.rpc_proc->p_proc); in rpc_encode_header()
2644 error = rpcauth_marshcred(task, xdr); in rpc_encode_header()
2649 trace_rpc_bad_callhdr(task); in rpc_encode_header()
2650 rpc_call_rpcerror(task, error); in rpc_encode_header()
2655 rpc_decode_header(struct rpc_task *task, struct xdr_stream *xdr) in rpc_decode_header() argument
2657 struct rpc_clnt *clnt = task->tk_client; in rpc_decode_header()
2666 if (task->tk_rqstp->rq_rcv_buf.len & 3) in rpc_decode_header()
2678 error = rpcauth_checkverf(task, xdr); in rpc_decode_header()
2689 trace_rpc__prog_unavail(task); in rpc_decode_header()
2693 trace_rpc__prog_mismatch(task); in rpc_decode_header()
2697 trace_rpc__proc_unavail(task); in rpc_decode_header()
2702 trace_rpc__garbage_args(task); in rpc_decode_header()
2711 if (task->tk_garb_retry) { in rpc_decode_header()
2712 task->tk_garb_retry--; in rpc_decode_header()
2713 task->tk_action = call_encode; in rpc_decode_header()
2717 rpc_call_rpcerror(task, error); in rpc_decode_header()
2721 trace_rpc__unparsable(task); in rpc_decode_header()
2726 trace_rpc_bad_verifier(task); in rpc_decode_header()
2746 trace_rpc__mismatch(task); in rpc_decode_header()
2761 rpcauth_invalcred(task); in rpc_decode_header()
2762 if (!task->tk_cred_retry) in rpc_decode_header()
2764 task->tk_cred_retry--; in rpc_decode_header()
2765 trace_rpc__stale_creds(task); in rpc_decode_header()
2770 if (!task->tk_garb_retry) in rpc_decode_header()
2772 task->tk_garb_retry--; in rpc_decode_header()
2773 trace_rpc__bad_creds(task); in rpc_decode_header()
2774 task->tk_action = call_encode; in rpc_decode_header()
2777 trace_rpc__auth_tooweak(task); in rpc_decode_header()
2779 task->tk_xprt->servername); in rpc_decode_header()
2808 rpc_null_call_prepare(struct rpc_task *task, void *data) in rpc_null_call_prepare() argument
2810 task->tk_flags &= ~RPC_TASK_NO_RETRANS_TIMEOUT; in rpc_null_call_prepare()
2811 rpc_call_start(task); in rpc_null_call_prepare()
2849 struct rpc_task *task; in rpc_ping() local
2855 task = rpc_call_null_helper(clnt, NULL, NULL, 0, NULL, NULL); in rpc_ping()
2856 if (IS_ERR(task)) in rpc_ping()
2857 return PTR_ERR(task); in rpc_ping()
2858 status = task->tk_status; in rpc_ping()
2859 rpc_put_task(task); in rpc_ping()
2874 struct rpc_task *task; in rpc_ping_noreply() local
2877 task = rpc_run_task(&task_setup_data); in rpc_ping_noreply()
2878 if (IS_ERR(task)) in rpc_ping_noreply()
2879 return PTR_ERR(task); in rpc_ping_noreply()
2880 status = task->tk_status; in rpc_ping_noreply()
2881 rpc_put_task(task); in rpc_ping_noreply()
2890 static void rpc_cb_add_xprt_done(struct rpc_task *task, void *calldata) in rpc_cb_add_xprt_done() argument
2894 if (task->tk_status == 0) in rpc_cb_add_xprt_done()
2925 struct rpc_task *task; in rpc_clnt_test_and_add_xprt() local
2949 task = rpc_call_null_helper(clnt, xprt, NULL, RPC_TASK_ASYNC, in rpc_clnt_test_and_add_xprt()
2951 if (IS_ERR(task)) in rpc_clnt_test_and_add_xprt()
2952 return PTR_ERR(task); in rpc_clnt_test_and_add_xprt()
2955 rpc_put_task(task); in rpc_clnt_test_and_add_xprt()
2965 struct rpc_task *task; in rpc_clnt_add_xprt_helper() local
2969 task = rpc_call_null_helper(clnt, xprt, NULL, 0, NULL, NULL); in rpc_clnt_add_xprt_helper()
2970 if (IS_ERR(task)) in rpc_clnt_add_xprt_helper()
2971 return PTR_ERR(task); in rpc_clnt_add_xprt_helper()
2973 status = task->tk_status; in rpc_clnt_add_xprt_helper()
2974 rpc_put_task(task); in rpc_clnt_add_xprt_helper()
3315 const struct rpc_task *task) in rpc_show_task() argument
3319 if (RPC_IS_QUEUED(task)) in rpc_show_task()
3320 rpc_waitq = rpc_qname(task->tk_waitqueue); in rpc_show_task()
3323 task->tk_pid, task->tk_flags, task->tk_status, in rpc_show_task()
3324 clnt, task->tk_rqstp, rpc_task_timeout(task), task->tk_ops, in rpc_show_task()
3325 clnt->cl_program->name, clnt->cl_vers, rpc_proc_name(task), in rpc_show_task()
3326 task->tk_action, rpc_waitq); in rpc_show_task()
3332 struct rpc_task *task; in rpc_show_tasks() local
3339 list_for_each_entry(task, &clnt->cl_tasks, tk_task) { in rpc_show_tasks()
3344 rpc_show_task(clnt, task); in rpc_show_tasks()