aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/sunrpc
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2007-07-18 16:18:52 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-02-29 02:21:59 -0500
commit36df9aae3158ce8fc4ede241169dc94ac910d884 (patch)
tree5f6caa22ce9414850fd34eefb54150b120a8f4e7 /include/linux/sunrpc
parentf6a1cc89309f0ae847a9b6fe418d1c4215e5bc55 (diff)
SUNRPC: Add a timer function to wait queues.
This is designed to replace the timeout timer in the individual rpc_tasks. By putting the timer function in the wait queue, we will eventually be able to reduce the total number of timers in use by the RPC subsystem. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux/sunrpc')
-rw-r--r--include/linux/sunrpc/sched.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h
index d39729e2b893..7751d3a05497 100644
--- a/include/linux/sunrpc/sched.h
+++ b/include/linux/sunrpc/sched.h
@@ -33,6 +33,8 @@ struct rpc_wait_queue;
33struct rpc_wait { 33struct rpc_wait {
34 struct list_head list; /* wait queue links */ 34 struct list_head list; /* wait queue links */
35 struct list_head links; /* Links to related tasks */ 35 struct list_head links; /* Links to related tasks */
36 struct list_head timer_list; /* Timer list */
37 unsigned long expires;
36}; 38};
37 39
38/* 40/*
@@ -191,6 +193,12 @@ struct rpc_task_setup {
191#define RPC_PRIORITY_HIGH (1) 193#define RPC_PRIORITY_HIGH (1)
192#define RPC_NR_PRIORITY (1 + RPC_PRIORITY_HIGH - RPC_PRIORITY_LOW) 194#define RPC_NR_PRIORITY (1 + RPC_PRIORITY_HIGH - RPC_PRIORITY_LOW)
193 195
196struct rpc_timer {
197 struct timer_list timer;
198 struct list_head list;
199 unsigned long expires;
200};
201
194/* 202/*
195 * RPC synchronization objects 203 * RPC synchronization objects
196 */ 204 */
@@ -203,6 +211,7 @@ struct rpc_wait_queue {
203 unsigned char count; /* # task groups remaining serviced so far */ 211 unsigned char count; /* # task groups remaining serviced so far */
204 unsigned char nr; /* # tasks remaining for cookie */ 212 unsigned char nr; /* # tasks remaining for cookie */
205 unsigned short qlen; /* total # tasks waiting in queue */ 213 unsigned short qlen; /* total # tasks waiting in queue */
214 struct rpc_timer timer_list;
206#ifdef RPC_DEBUG 215#ifdef RPC_DEBUG
207 const char * name; 216 const char * name;
208#endif 217#endif