aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Adamson <andros@netapp.com>2009-04-01 09:22:40 -0400
committerBenny Halevy <bhalevy@panasas.com>2009-06-17 15:25:07 -0400
commitaae2006e9b0c294114915c13022fa348e1a88023 (patch)
tree2643d2ed1b2d44c5e5d7577e1ae0516eae95f977
parentc3fad1b1aaf850bf692642642ace7cd0d64af0a3 (diff)
nfs41: sunrpc: Export the call prepare state for session reset
Signed-off-by: Andy Adamson<andros@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--include/linux/sunrpc/clnt.h1
-rw-r--r--include/linux/sunrpc/sched.h1
-rw-r--r--net/sunrpc/clnt.c13
-rw-r--r--net/sunrpc/sched.c2
4 files changed, 16 insertions, 1 deletions
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
index c39a21040dcb..37881f1a0bd7 100644
--- a/include/linux/sunrpc/clnt.h
+++ b/include/linux/sunrpc/clnt.h
@@ -143,6 +143,7 @@ int rpc_call_sync(struct rpc_clnt *clnt,
143 const struct rpc_message *msg, int flags); 143 const struct rpc_message *msg, int flags);
144struct rpc_task *rpc_call_null(struct rpc_clnt *clnt, struct rpc_cred *cred, 144struct rpc_task *rpc_call_null(struct rpc_clnt *clnt, struct rpc_cred *cred,
145 int flags); 145 int flags);
146void rpc_restart_call_prepare(struct rpc_task *);
146void rpc_restart_call(struct rpc_task *); 147void rpc_restart_call(struct rpc_task *);
147void rpc_setbufsize(struct rpc_clnt *, unsigned int, unsigned int); 148void rpc_setbufsize(struct rpc_clnt *, unsigned int, unsigned int);
148size_t rpc_max_payload(struct rpc_clnt *); 149size_t rpc_max_payload(struct rpc_clnt *);
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h
index 64981a2f1cae..177376880fab 100644
--- a/include/linux/sunrpc/sched.h
+++ b/include/linux/sunrpc/sched.h
@@ -237,6 +237,7 @@ void rpc_show_tasks(void);
237int rpc_init_mempool(void); 237int rpc_init_mempool(void);
238void rpc_destroy_mempool(void); 238void rpc_destroy_mempool(void);
239extern struct workqueue_struct *rpciod_workqueue; 239extern struct workqueue_struct *rpciod_workqueue;
240void rpc_prepare_task(struct rpc_task *task);
240 241
241static inline void rpc_exit(struct rpc_task *task, int status) 242static inline void rpc_exit(struct rpc_task *task, int status)
242{ 243{
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 5abab094441f..d00e8135f866 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -695,6 +695,19 @@ void rpc_force_rebind(struct rpc_clnt *clnt)
695EXPORT_SYMBOL_GPL(rpc_force_rebind); 695EXPORT_SYMBOL_GPL(rpc_force_rebind);
696 696
697/* 697/*
698 * Restart an (async) RPC call from the call_prepare state.
699 * Usually called from within the exit handler.
700 */
701void
702rpc_restart_call_prepare(struct rpc_task *task)
703{
704 if (RPC_ASSASSINATED(task))
705 return;
706 task->tk_action = rpc_prepare_task;
707}
708EXPORT_SYMBOL_GPL(rpc_restart_call_prepare);
709
710/*
698 * Restart an (async) RPC call. Usually called from within the 711 * Restart an (async) RPC call. Usually called from within the
699 * exit handler. 712 * exit handler.
700 */ 713 */
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
index ff50a0546865..1102ce1251f7 100644
--- a/net/sunrpc/sched.c
+++ b/net/sunrpc/sched.c
@@ -569,7 +569,7 @@ EXPORT_SYMBOL_GPL(rpc_delay);
569/* 569/*
570 * Helper to call task->tk_ops->rpc_call_prepare 570 * Helper to call task->tk_ops->rpc_call_prepare
571 */ 571 */
572static void rpc_prepare_task(struct rpc_task *task) 572void rpc_prepare_task(struct rpc_task *task)
573{ 573{
574 task->tk_ops->rpc_call_prepare(task, task->tk_calldata); 574 task->tk_ops->rpc_call_prepare(task, task->tk_calldata);
575} 575}