Lines Matching full:task
57 static void call_start(struct rpc_task *task);
58 static void call_reserve(struct rpc_task *task);
59 static void call_reserveresult(struct rpc_task *task);
60 static void call_allocate(struct rpc_task *task);
61 static void call_encode(struct rpc_task *task);
62 static void call_decode(struct rpc_task *task);
63 static void call_bind(struct rpc_task *task);
64 static void call_bind_status(struct rpc_task *task);
65 static void call_transmit(struct rpc_task *task);
66 static void call_status(struct rpc_task *task);
67 static void call_transmit_status(struct rpc_task *task);
68 static void call_refresh(struct rpc_task *task);
69 static void call_refreshresult(struct rpc_task *task);
70 static void call_connect(struct rpc_task *task);
71 static void call_connect_status(struct rpc_task *task);
73 static int rpc_encode_header(struct rpc_task *task,
75 static int rpc_decode_header(struct rpc_task *task,
78 static void rpc_check_timeout(struct rpc_task *task);
1014 void rpc_task_release_transport(struct rpc_task *task) in rpc_task_release_transport() argument
1016 struct rpc_xprt *xprt = task->tk_xprt; in rpc_task_release_transport()
1019 task->tk_xprt = NULL; in rpc_task_release_transport()
1020 if (task->tk_client) in rpc_task_release_transport()
1021 rpc_task_release_xprt(task->tk_client, xprt); in rpc_task_release_transport()
1028 void rpc_task_release_client(struct rpc_task *task) in rpc_task_release_client() argument
1030 struct rpc_clnt *clnt = task->tk_client; in rpc_task_release_client()
1032 rpc_task_release_transport(task); in rpc_task_release_client()
1034 /* Remove from client task list */ in rpc_task_release_client()
1036 list_del(&task->tk_task); in rpc_task_release_client()
1038 task->tk_client = NULL; in rpc_task_release_client()
1062 void rpc_task_set_transport(struct rpc_task *task, struct rpc_clnt *clnt) in rpc_task_set_transport() argument
1064 if (task->tk_xprt) in rpc_task_set_transport()
1066 if (task->tk_flags & RPC_TASK_NO_ROUND_ROBIN) in rpc_task_set_transport()
1067 task->tk_xprt = rpc_task_get_first_xprt(clnt); in rpc_task_set_transport()
1069 task->tk_xprt = rpc_task_get_next_xprt(clnt); in rpc_task_set_transport()
1073 void rpc_task_set_client(struct rpc_task *task, struct rpc_clnt *clnt) in rpc_task_set_client() argument
1077 rpc_task_set_transport(task, clnt); in rpc_task_set_client()
1078 task->tk_client = clnt; in rpc_task_set_client()
1081 task->tk_flags |= RPC_TASK_SOFT; in rpc_task_set_client()
1083 task->tk_flags |= RPC_TASK_TIMEOUT; in rpc_task_set_client()
1085 task->tk_flags |= RPC_TASK_NO_RETRANS_TIMEOUT; in rpc_task_set_client()
1087 task->tk_flags |= RPC_TASK_SWAPPER; in rpc_task_set_client()
1090 list_add_tail(&task->tk_task, &clnt->cl_tasks); in rpc_task_set_client()
1096 rpc_task_set_rpc_message(struct rpc_task *task, const struct rpc_message *msg) in rpc_task_set_rpc_message() argument
1099 task->tk_msg.rpc_proc = msg->rpc_proc; in rpc_task_set_rpc_message()
1100 task->tk_msg.rpc_argp = msg->rpc_argp; in rpc_task_set_rpc_message()
1101 task->tk_msg.rpc_resp = msg->rpc_resp; in rpc_task_set_rpc_message()
1102 task->tk_msg.rpc_cred = msg->rpc_cred; in rpc_task_set_rpc_message()
1103 if (!(task->tk_flags & RPC_TASK_CRED_NOREF)) in rpc_task_set_rpc_message()
1104 get_cred(task->tk_msg.rpc_cred); in rpc_task_set_rpc_message()
1112 rpc_default_callback(struct rpc_task *task, void *data) in rpc_default_callback() argument
1121 * rpc_run_task - Allocate a new RPC task, then run rpc_execute against it
1122 * @task_setup_data: pointer to task initialisation data
1126 struct rpc_task *task; in rpc_run_task() local
1128 task = rpc_new_task(task_setup_data); in rpc_run_task()
1130 if (!RPC_IS_ASYNC(task)) in rpc_run_task()
1131 task->tk_flags |= RPC_TASK_CRED_NOREF; in rpc_run_task()
1133 rpc_task_set_client(task, task_setup_data->rpc_client); in rpc_run_task()
1134 rpc_task_set_rpc_message(task, task_setup_data->rpc_message); in rpc_run_task()
1136 if (task->tk_action == NULL) in rpc_run_task()
1137 rpc_call_start(task); in rpc_run_task()
1139 atomic_inc(&task->tk_count); in rpc_run_task()
1140 rpc_execute(task); in rpc_run_task()
1141 return task; in rpc_run_task()
1153 struct rpc_task *task; in rpc_call_sync() local
1169 task = rpc_run_task(&task_setup_data); in rpc_call_sync()
1170 if (IS_ERR(task)) in rpc_call_sync()
1171 return PTR_ERR(task); in rpc_call_sync()
1172 status = task->tk_status; in rpc_call_sync()
1173 rpc_put_task(task); in rpc_call_sync()
1190 struct rpc_task *task; in rpc_call_async() local
1199 task = rpc_run_task(&task_setup_data); in rpc_call_async()
1200 if (IS_ERR(task)) in rpc_call_async()
1201 return PTR_ERR(task); in rpc_call_async()
1202 rpc_put_task(task); in rpc_call_async()
1208 static void call_bc_encode(struct rpc_task *task);
1211 * rpc_run_bc_task - Allocate a new RPC task for backchannel use, then run
1217 struct rpc_task *task; in rpc_run_bc_task() local
1228 task = rpc_new_task(&task_setup_data); in rpc_run_bc_task()
1229 xprt_init_bc_request(req, task); in rpc_run_bc_task()
1231 task->tk_action = call_bc_encode; in rpc_run_bc_task()
1232 atomic_inc(&task->tk_count); in rpc_run_bc_task()
1233 WARN_ON_ONCE(atomic_read(&task->tk_count) != 2); in rpc_run_bc_task()
1234 rpc_execute(task); in rpc_run_bc_task()
1236 dprintk("RPC: rpc_run_bc_task: task= %p\n", task); in rpc_run_bc_task()
1237 return task; in rpc_run_bc_task()
1265 rpc_call_start(struct rpc_task *task) in rpc_call_start() argument
1267 task->tk_action = call_start; in rpc_call_start()
1565 __rpc_restart_call(struct rpc_task *task, void (*action)(struct rpc_task *)) in __rpc_restart_call() argument
1567 task->tk_status = 0; in __rpc_restart_call()
1568 task->tk_rpc_status = 0; in __rpc_restart_call()
1569 task->tk_action = action; in __rpc_restart_call()
1578 rpc_restart_call(struct rpc_task *task) in rpc_restart_call() argument
1580 return __rpc_restart_call(task, call_start); in rpc_restart_call()
1589 rpc_restart_call_prepare(struct rpc_task *task) in rpc_restart_call_prepare() argument
1591 if (task->tk_ops->rpc_call_prepare != NULL) in rpc_restart_call_prepare()
1592 return __rpc_restart_call(task, rpc_prepare_task); in rpc_restart_call_prepare()
1593 return rpc_restart_call(task); in rpc_restart_call_prepare()
1598 *rpc_proc_name(const struct rpc_task *task) in rpc_proc_name() argument
1600 const struct rpc_procinfo *proc = task->tk_msg.rpc_proc; in rpc_proc_name()
1612 __rpc_call_rpcerror(struct rpc_task *task, int tk_status, int rpc_status) in __rpc_call_rpcerror() argument
1614 trace_rpc_call_rpcerror(task, tk_status, rpc_status); in __rpc_call_rpcerror()
1615 task->tk_rpc_status = rpc_status; in __rpc_call_rpcerror()
1616 rpc_exit(task, tk_status); in __rpc_call_rpcerror()
1620 rpc_call_rpcerror(struct rpc_task *task, int status) in rpc_call_rpcerror() argument
1622 __rpc_call_rpcerror(task, status, status); in rpc_call_rpcerror()
1632 call_start(struct rpc_task *task) in call_start() argument
1634 struct rpc_clnt *clnt = task->tk_client; in call_start()
1635 int idx = task->tk_msg.rpc_proc->p_statidx; in call_start()
1637 trace_rpc_request(task); in call_start()
1643 task->tk_action = call_reserve; in call_start()
1644 rpc_task_set_transport(task, clnt); in call_start()
1651 call_reserve(struct rpc_task *task) in call_reserve() argument
1653 task->tk_status = 0; in call_reserve()
1654 task->tk_action = call_reserveresult; in call_reserve()
1655 xprt_reserve(task); in call_reserve()
1658 static void call_retry_reserve(struct rpc_task *task);
1664 call_reserveresult(struct rpc_task *task) in call_reserveresult() argument
1666 int status = task->tk_status; 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()
1679 rpc_call_rpcerror(task, -EIO); in call_reserveresult()
1685 rpc_delay(task, HZ >> 2); in call_reserveresult()
1688 task->tk_action = call_retry_reserve; in call_reserveresult()
1691 rpc_call_rpcerror(task, status); in call_reserveresult()
1699 call_retry_reserve(struct rpc_task *task) in call_retry_reserve() argument
1701 task->tk_status = 0; in call_retry_reserve()
1702 task->tk_action = call_reserveresult; in call_retry_reserve()
1703 xprt_retry_reserve(task); in call_retry_reserve()
1710 call_refresh(struct rpc_task *task) in call_refresh() argument
1712 task->tk_action = call_refreshresult; in call_refresh()
1713 task->tk_status = 0; in call_refresh()
1714 task->tk_client->cl_stats->rpcauthrefresh++; in call_refresh()
1715 rpcauth_refreshcred(task); in call_refresh()
1722 call_refreshresult(struct rpc_task *task) in call_refreshresult() argument
1724 int status = task->tk_status; in call_refreshresult()
1726 task->tk_status = 0; in call_refreshresult()
1727 task->tk_action = call_refresh; in call_refreshresult()
1730 if (rpcauth_uptodatecred(task)) { in call_refreshresult()
1731 task->tk_action = call_allocate; in call_refreshresult()
1739 rpc_delay(task, 3*HZ); in call_refreshresult()
1745 if (!task->tk_cred_retry) in call_refreshresult()
1747 task->tk_cred_retry--; in call_refreshresult()
1748 trace_rpc_retry_refresh_status(task); in call_refreshresult()
1751 trace_rpc_refresh_status(task); in call_refreshresult()
1752 rpc_call_rpcerror(task, status); in call_refreshresult()
1760 call_allocate(struct rpc_task *task) in call_allocate() argument
1762 const struct rpc_auth *auth = task->tk_rqstp->rq_cred->cr_auth; in call_allocate()
1763 struct rpc_rqst *req = task->tk_rqstp; in call_allocate()
1765 const struct rpc_procinfo *proc = task->tk_msg.rpc_proc; in call_allocate()
1768 task->tk_status = 0; in call_allocate()
1769 task->tk_action = call_encode; in call_allocate()
1796 status = xprt->ops->buf_alloc(task); in call_allocate()
1797 trace_rpc_buf_alloc(task, status); in call_allocate()
1801 rpc_call_rpcerror(task, status); in call_allocate()
1805 if (RPC_IS_ASYNC(task) || !fatal_signal_pending(current)) { in call_allocate()
1806 task->tk_action = call_allocate; in call_allocate()
1807 rpc_delay(task, HZ>>4); in call_allocate()
1811 rpc_call_rpcerror(task, -ERESTARTSYS); in call_allocate()
1815 rpc_task_need_encode(struct rpc_task *task) in rpc_task_need_encode() argument
1817 return test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate) == 0 && in rpc_task_need_encode()
1818 (!(task->tk_flags & RPC_TASK_SENT) || in rpc_task_need_encode()
1819 !(task->tk_flags & RPC_TASK_NO_RETRANS_TIMEOUT) || in rpc_task_need_encode()
1820 xprt_request_need_retransmit(task)); in rpc_task_need_encode()
1824 rpc_xdr_encode(struct rpc_task *task) in rpc_xdr_encode() argument
1826 struct rpc_rqst *req = task->tk_rqstp; in rpc_xdr_encode()
1841 if (rpc_encode_header(task, &xdr)) in rpc_xdr_encode()
1844 task->tk_status = rpcauth_wrap_req(task, &xdr); in rpc_xdr_encode()
1851 call_encode(struct rpc_task *task) in call_encode() argument
1853 if (!rpc_task_need_encode(task)) in call_encode()
1856 /* Dequeue task from the receive queue while we're encoding */ in call_encode()
1857 xprt_request_dequeue_xprt(task); in call_encode()
1859 rpc_xdr_encode(task); in call_encode()
1861 if (task->tk_status != 0) { in call_encode()
1863 switch (task->tk_status) { in call_encode()
1866 rpc_delay(task, HZ >> 4); in call_encode()
1869 if (!task->tk_cred_retry) { in call_encode()
1870 rpc_call_rpcerror(task, task->tk_status); in call_encode()
1872 task->tk_action = call_refresh; in call_encode()
1873 task->tk_cred_retry--; in call_encode()
1874 trace_rpc_retry_refresh_status(task); in call_encode()
1878 rpc_call_rpcerror(task, task->tk_status); in call_encode()
1883 /* Add task to reply queue before transmission to avoid races */ in call_encode()
1884 if (rpc_reply_expected(task)) in call_encode()
1885 xprt_request_enqueue_receive(task); in call_encode()
1886 xprt_request_enqueue_transmit(task); in call_encode()
1888 task->tk_action = call_transmit; in call_encode()
1890 if (!xprt_bound(task->tk_xprt)) in call_encode()
1891 task->tk_action = call_bind; in call_encode()
1892 else if (!xprt_connected(task->tk_xprt)) in call_encode()
1893 task->tk_action = call_connect; in call_encode()
1897 * Helpers to check if the task was already transmitted, and
1901 rpc_task_transmitted(struct rpc_task *task) in rpc_task_transmitted() argument
1903 return !test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate); in rpc_task_transmitted()
1907 rpc_task_handle_transmitted(struct rpc_task *task) in rpc_task_handle_transmitted() argument
1909 xprt_end_transmit(task); in rpc_task_handle_transmitted()
1910 task->tk_action = call_transmit_status; in rpc_task_handle_transmitted()
1917 call_bind(struct rpc_task *task) in call_bind() argument
1919 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_bind()
1921 if (rpc_task_transmitted(task)) { in call_bind()
1922 rpc_task_handle_transmitted(task); in call_bind()
1927 task->tk_action = call_connect; in call_bind()
1931 task->tk_action = call_bind_status; in call_bind()
1932 if (!xprt_prepare_transmit(task)) in call_bind()
1935 xprt->ops->rpcbind(task); in call_bind()
1942 call_bind_status(struct rpc_task *task) in call_bind_status() argument
1944 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_bind_status()
1947 if (rpc_task_transmitted(task)) { in call_bind_status()
1948 rpc_task_handle_transmitted(task); in call_bind_status()
1952 if (task->tk_status >= 0) in call_bind_status()
1955 task->tk_status = 0; in call_bind_status()
1959 switch (task->tk_status) { in call_bind_status()
1961 rpc_delay(task, HZ >> 2); in call_bind_status()
1964 trace_rpcb_prog_unavail_err(task); in call_bind_status()
1966 if (task->tk_msg.rpc_proc->p_proc == 0) { in call_bind_status()
1970 if (task->tk_rebind_retry == 0) in call_bind_status()
1972 task->tk_rebind_retry--; in call_bind_status()
1973 rpc_delay(task, 3*HZ); in call_bind_status()
1976 rpc_delay(task, HZ >> 2); in call_bind_status()
1981 trace_rpcb_timeout_err(task); in call_bind_status()
1985 trace_rpcb_bind_version_err(task); in call_bind_status()
1988 trace_rpcb_bind_version_err(task); in call_bind_status()
1999 trace_rpcb_unreachable_err(task); in call_bind_status()
2000 if (!RPC_IS_SOFTCONN(task)) { in call_bind_status()
2001 rpc_delay(task, 5*HZ); in call_bind_status()
2004 status = task->tk_status; in call_bind_status()
2007 trace_rpcb_unrecognized_err(task); in call_bind_status()
2010 rpc_call_rpcerror(task, status); in call_bind_status()
2013 task->tk_action = call_connect; in call_bind_status()
2016 task->tk_status = 0; in call_bind_status()
2017 task->tk_action = call_bind; in call_bind_status()
2018 rpc_check_timeout(task); in call_bind_status()
2025 call_connect(struct rpc_task *task) in call_connect() argument
2027 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_connect()
2029 if (rpc_task_transmitted(task)) { in call_connect()
2030 rpc_task_handle_transmitted(task); in call_connect()
2035 task->tk_action = call_transmit; in call_connect()
2039 task->tk_action = call_connect_status; in call_connect()
2040 if (task->tk_status < 0) in call_connect()
2042 if (task->tk_flags & RPC_TASK_NOCONNECT) { in call_connect()
2043 rpc_call_rpcerror(task, -ENOTCONN); in call_connect()
2046 if (!xprt_prepare_transmit(task)) in call_connect()
2048 xprt_connect(task); in call_connect()
2055 call_connect_status(struct rpc_task *task) in call_connect_status() argument
2057 struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt; in call_connect_status()
2058 struct rpc_clnt *clnt = task->tk_client; in call_connect_status()
2059 int status = task->tk_status; in call_connect_status()
2061 if (rpc_task_transmitted(task)) { in call_connect_status()
2062 rpc_task_handle_transmitted(task); in call_connect_status()
2066 trace_rpc_connect_status(task); in call_connect_status()
2068 if (task->tk_status == 0) { in call_connect_status()
2073 task->tk_status = 0; in call_connect_status()
2077 task->tk_status = 0; in call_connect_status()
2081 if (RPC_IS_SOFTCONN(task)) in call_connect_status()
2095 xprt_conditional_disconnect(task->tk_rqstp->rq_xprt, in call_connect_status()
2096 task->tk_rqstp->rq_connect_cookie); in call_connect_status()
2097 if (RPC_IS_SOFTCONN(task)) in call_connect_status()
2100 rpc_delay(task, 3*HZ); in call_connect_status()
2108 rpc_delay(task, HZ >> 2); in call_connect_status()
2111 rpc_call_rpcerror(task, status); in call_connect_status()
2114 task->tk_action = call_transmit; in call_connect_status()
2118 task->tk_action = call_bind; in call_connect_status()
2119 rpc_check_timeout(task); in call_connect_status()
2126 call_transmit(struct rpc_task *task) in call_transmit() argument
2128 if (rpc_task_transmitted(task)) { in call_transmit()
2129 rpc_task_handle_transmitted(task); in call_transmit()
2133 task->tk_action = call_transmit_status; in call_transmit()
2134 if (!xprt_prepare_transmit(task)) in call_transmit()
2136 task->tk_status = 0; in call_transmit()
2137 if (test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate)) { in call_transmit()
2138 if (!xprt_connected(task->tk_xprt)) { in call_transmit()
2139 task->tk_status = -ENOTCONN; in call_transmit()
2142 xprt_transmit(task); in call_transmit()
2144 xprt_end_transmit(task); in call_transmit()
2151 call_transmit_status(struct rpc_task *task) in call_transmit_status() argument
2153 task->tk_action = call_status; in call_transmit_status()
2159 if (rpc_task_transmitted(task)) { in call_transmit_status()
2160 task->tk_status = 0; in call_transmit_status()
2161 xprt_request_wait_receive(task); in call_transmit_status()
2165 switch (task->tk_status) { in call_transmit_status()
2169 task->tk_status = 0; in call_transmit_status()
2170 task->tk_action = call_encode; in call_transmit_status()
2180 rpc_delay(task, HZ>>2); in call_transmit_status()
2184 task->tk_action = call_transmit; in call_transmit_status()
2185 task->tk_status = 0; in call_transmit_status()
2193 if (RPC_IS_SOFTCONN(task)) { in call_transmit_status()
2194 if (!task->tk_msg.rpc_proc->p_proc) in call_transmit_status()
2195 trace_xprt_ping(task->tk_xprt, in call_transmit_status()
2196 task->tk_status); in call_transmit_status()
2197 rpc_call_rpcerror(task, task->tk_status); in call_transmit_status()
2206 task->tk_action = call_bind; in call_transmit_status()
2207 task->tk_status = 0; in call_transmit_status()
2210 rpc_check_timeout(task); in call_transmit_status()
2214 static void call_bc_transmit(struct rpc_task *task);
2215 static void call_bc_transmit_status(struct rpc_task *task);
2218 call_bc_encode(struct rpc_task *task) in call_bc_encode() argument
2220 xprt_request_enqueue_transmit(task); in call_bc_encode()
2221 task->tk_action = call_bc_transmit; in call_bc_encode()
2229 call_bc_transmit(struct rpc_task *task) in call_bc_transmit() argument
2231 task->tk_action = call_bc_transmit_status; in call_bc_transmit()
2232 if (test_bit(RPC_TASK_NEED_XMIT, &task->tk_runstate)) { in call_bc_transmit()
2233 if (!xprt_prepare_transmit(task)) in call_bc_transmit()
2235 task->tk_status = 0; in call_bc_transmit()
2236 xprt_transmit(task); in call_bc_transmit()
2238 xprt_end_transmit(task); in call_bc_transmit()
2242 call_bc_transmit_status(struct rpc_task *task) in call_bc_transmit_status() argument
2244 struct rpc_rqst *req = task->tk_rqstp; in call_bc_transmit_status()
2246 if (rpc_task_transmitted(task)) in call_bc_transmit_status()
2247 task->tk_status = 0; in call_bc_transmit_status()
2249 switch (task->tk_status) { in call_bc_transmit_status()
2264 rpc_delay(task, HZ>>2); in call_bc_transmit_status()
2268 task->tk_status = 0; in call_bc_transmit_status()
2269 task->tk_action = call_bc_transmit; in call_bc_transmit_status()
2280 "error: %d\n", task->tk_status); in call_bc_transmit_status()
2290 "error: %d\n", task->tk_status); in call_bc_transmit_status()
2293 task->tk_action = rpc_exit_task; in call_bc_transmit_status()
2301 call_status(struct rpc_task *task) in call_status() argument
2303 struct rpc_clnt *clnt = task->tk_client; in call_status()
2306 if (!task->tk_msg.rpc_proc->p_proc) in call_status()
2307 trace_xprt_ping(task->tk_xprt, task->tk_status); in call_status()
2309 status = task->tk_status; in call_status()
2311 task->tk_action = call_decode; in call_status()
2315 trace_rpc_call_status(task); in call_status()
2316 task->tk_status = 0; in call_status()
2323 if (RPC_IS_SOFTCONN(task)) in call_status()
2329 rpc_delay(task, 3*HZ); in call_status()
2340 rpc_delay(task, 3*HZ); in call_status()
2348 rpc_delay(task, HZ>>2); in call_status()
2359 task->tk_action = call_encode; in call_status()
2361 rpc_check_timeout(task); in call_status()
2364 rpc_call_rpcerror(task, status); in call_status()
2377 rpc_check_timeout(struct rpc_task *task) in rpc_check_timeout() argument
2379 struct rpc_clnt *clnt = task->tk_client; in rpc_check_timeout()
2381 if (RPC_SIGNALLED(task)) { in rpc_check_timeout()
2382 rpc_call_rpcerror(task, -ERESTARTSYS); in rpc_check_timeout()
2386 if (xprt_adjust_timeout(task->tk_rqstp) == 0) in rpc_check_timeout()
2389 trace_rpc_timeout_status(task); in rpc_check_timeout()
2390 task->tk_timeouts++; in rpc_check_timeout()
2392 if (RPC_IS_SOFTCONN(task) && !rpc_check_connected(task->tk_rqstp)) { in rpc_check_timeout()
2393 rpc_call_rpcerror(task, -ETIMEDOUT); in rpc_check_timeout()
2397 if (RPC_IS_SOFT(task)) { in rpc_check_timeout()
2403 if ((task->tk_flags & RPC_TASK_NO_RETRANS_TIMEOUT) && in rpc_check_timeout()
2404 rpc_check_connected(task->tk_rqstp)) in rpc_check_timeout()
2411 task->tk_xprt->servername); in rpc_check_timeout()
2413 if (task->tk_flags & RPC_TASK_TIMEOUT) in rpc_check_timeout()
2414 rpc_call_rpcerror(task, -ETIMEDOUT); in rpc_check_timeout()
2416 __rpc_call_rpcerror(task, -EIO, -ETIMEDOUT); in rpc_check_timeout()
2420 if (!(task->tk_flags & RPC_CALL_MAJORSEEN)) { in rpc_check_timeout()
2421 task->tk_flags |= RPC_CALL_MAJORSEEN; in rpc_check_timeout()
2426 task->tk_xprt->servername); in rpc_check_timeout()
2434 rpcauth_invalcred(task); in rpc_check_timeout()
2441 call_decode(struct rpc_task *task) in call_decode() argument
2443 struct rpc_clnt *clnt = task->tk_client; in call_decode()
2444 struct rpc_rqst *req = task->tk_rqstp; in call_decode()
2448 if (!task->tk_msg.rpc_proc->p_decode) { in call_decode()
2449 task->tk_action = rpc_exit_task; in call_decode()
2453 if (task->tk_flags & RPC_CALL_MAJORSEEN) { in call_decode()
2457 task->tk_xprt->servername); in call_decode()
2459 task->tk_flags &= ~RPC_CALL_MAJORSEEN; in call_decode()
2476 trace_rpc_xdr_recvfrom(task, &req->rq_rcv_buf); in call_decode()
2484 err = rpc_decode_header(task, &xdr); in call_decode()
2488 task->tk_action = rpc_exit_task; in call_decode()
2489 task->tk_status = rpcauth_unwrap_resp(task, &xdr); in call_decode()
2492 task->tk_status = 0; in call_decode()
2493 if (task->tk_client->cl_discrtry) in call_decode()
2496 task->tk_action = call_encode; in call_decode()
2497 rpc_check_timeout(task); in call_decode()
2500 task->tk_action = call_reserve; in call_decode()
2501 rpc_check_timeout(task); in call_decode()
2502 rpcauth_invalcred(task); in call_decode()
2504 xprt_release(task); in call_decode()
2509 rpc_encode_header(struct rpc_task *task, struct xdr_stream *xdr) in rpc_encode_header() argument
2511 struct rpc_clnt *clnt = task->tk_client; in rpc_encode_header()
2512 struct rpc_rqst *req = task->tk_rqstp; in rpc_encode_header()
2525 *p = cpu_to_be32(task->tk_msg.rpc_proc->p_proc); in rpc_encode_header()
2527 error = rpcauth_marshcred(task, xdr); in rpc_encode_header()
2532 trace_rpc_bad_callhdr(task); in rpc_encode_header()
2533 rpc_call_rpcerror(task, error); in rpc_encode_header()
2538 rpc_decode_header(struct rpc_task *task, struct xdr_stream *xdr) in rpc_decode_header() argument
2540 struct rpc_clnt *clnt = task->tk_client; in rpc_decode_header()
2549 if (task->tk_rqstp->rq_rcv_buf.len & 3) in rpc_decode_header()
2561 error = rpcauth_checkverf(task, xdr); in rpc_decode_header()
2572 trace_rpc__prog_unavail(task); in rpc_decode_header()
2576 trace_rpc__prog_mismatch(task); in rpc_decode_header()
2580 trace_rpc__proc_unavail(task); in rpc_decode_header()
2585 trace_rpc__garbage_args(task); in rpc_decode_header()
2594 if (task->tk_garb_retry) { in rpc_decode_header()
2595 task->tk_garb_retry--; in rpc_decode_header()
2596 task->tk_action = call_encode; in rpc_decode_header()
2600 rpc_call_rpcerror(task, error); in rpc_decode_header()
2604 trace_rpc__unparsable(task); in rpc_decode_header()
2609 trace_rpc_bad_verifier(task); in rpc_decode_header()
2621 trace_rpc__mismatch(task); in rpc_decode_header()
2636 if (!task->tk_cred_retry) in rpc_decode_header()
2638 task->tk_cred_retry--; in rpc_decode_header()
2639 trace_rpc__stale_creds(task); in rpc_decode_header()
2644 if (!task->tk_garb_retry) in rpc_decode_header()
2646 task->tk_garb_retry--; in rpc_decode_header()
2647 trace_rpc__bad_creds(task); in rpc_decode_header()
2648 task->tk_action = call_encode; in rpc_decode_header()
2651 trace_rpc__auth_tooweak(task); in rpc_decode_header()
2653 task->tk_xprt->servername); in rpc_decode_header()
2721 static void rpc_cb_add_xprt_done(struct rpc_task *task, void *calldata) in rpc_cb_add_xprt_done() argument
2725 if (task->tk_status == 0) in rpc_cb_add_xprt_done()
2755 struct rpc_task *task; in rpc_clnt_test_and_add_xprt() local
2767 task = rpc_call_null_helper(clnt, xprt, NULL, RPC_TASK_ASYNC, in rpc_clnt_test_and_add_xprt()
2770 rpc_put_task(task); in rpc_clnt_test_and_add_xprt()
2799 struct rpc_task *task; in rpc_clnt_setup_test_and_add_xprt() local
2810 task = rpc_call_null_helper(clnt, xprt, NULL, 0, NULL, NULL); in rpc_clnt_setup_test_and_add_xprt()
2811 if (IS_ERR(task)) { in rpc_clnt_setup_test_and_add_xprt()
2812 status = PTR_ERR(task); in rpc_clnt_setup_test_and_add_xprt()
2815 status = task->tk_status; in rpc_clnt_setup_test_and_add_xprt()
2816 rpc_put_task(task); in rpc_clnt_setup_test_and_add_xprt()
2980 const struct rpc_task *task) in rpc_show_task() argument
2984 if (RPC_IS_QUEUED(task)) in rpc_show_task()
2985 rpc_waitq = rpc_qname(task->tk_waitqueue); in rpc_show_task()
2988 task->tk_pid, task->tk_flags, task->tk_status, in rpc_show_task()
2989 clnt, task->tk_rqstp, rpc_task_timeout(task), task->tk_ops, in rpc_show_task()
2990 clnt->cl_program->name, clnt->cl_vers, rpc_proc_name(task), in rpc_show_task()
2991 task->tk_action, rpc_waitq); in rpc_show_task()
2997 struct rpc_task *task; in rpc_show_tasks() local
3004 list_for_each_entry(task, &clnt->cl_tasks, tk_task) { in rpc_show_tasks()
3009 rpc_show_task(clnt, task); in rpc_show_tasks()