diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-07-18 16:18:52 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-02-29 02:21:59 -0500 |
commit | 36df9aae3158ce8fc4ede241169dc94ac910d884 (patch) | |
tree | 5f6caa22ce9414850fd34eefb54150b120a8f4e7 /include/linux/sunrpc | |
parent | f6a1cc89309f0ae847a9b6fe418d1c4215e5bc55 (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.h | 9 |
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; | |||
33 | struct rpc_wait { | 33 | struct 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 | ||
196 | struct 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 |