aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/sunrpc
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2007-07-14 15:40:00 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-01-30 02:05:30 -0500
commit3ff7576ddac06c3d07089e241b40826d24bbf1ac (patch)
tree7f5998434b7d0dd1f08ff7ee65c93fab4861a6d3 /include/linux/sunrpc
parentc970aa85e71bd581726c42df843f6f129db275ac (diff)
SUNRPC: Clean up the initialisation of priority queue scheduling info.
We want the default scheduling priority (priority == 0) to remain RPC_PRIORITY_NORMAL. Also ensure that the priority wait queue scheduling is per process id instead of sometimes being per thread, and sometimes being per inode. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux/sunrpc')
-rw-r--r--include/linux/sunrpc/sched.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h
index d974421d7647..c9444fdc23ac 100644
--- a/include/linux/sunrpc/sched.h
+++ b/include/linux/sunrpc/sched.h
@@ -56,8 +56,6 @@ struct rpc_task {
56 __u8 tk_garb_retry; 56 __u8 tk_garb_retry;
57 __u8 tk_cred_retry; 57 __u8 tk_cred_retry;
58 58
59 unsigned long tk_cookie; /* Cookie for batching tasks */
60
61 /* 59 /*
62 * timeout_fn to be executed by timer bottom half 60 * timeout_fn to be executed by timer bottom half
63 * callback to be executed after waking up 61 * callback to be executed after waking up
@@ -78,7 +76,6 @@ struct rpc_task {
78 struct timer_list tk_timer; /* kernel timer */ 76 struct timer_list tk_timer; /* kernel timer */
79 unsigned long tk_timeout; /* timeout for rpc_sleep() */ 77 unsigned long tk_timeout; /* timeout for rpc_sleep() */
80 unsigned short tk_flags; /* misc flags */ 78 unsigned short tk_flags; /* misc flags */
81 unsigned char tk_priority : 2;/* Task priority */
82 unsigned long tk_runstate; /* Task run status */ 79 unsigned long tk_runstate; /* Task run status */
83 struct workqueue_struct *tk_workqueue; /* Normally rpciod, but could 80 struct workqueue_struct *tk_workqueue; /* Normally rpciod, but could
84 * be any workqueue 81 * be any workqueue
@@ -94,6 +91,9 @@ struct rpc_task {
94 unsigned long tk_start; /* RPC task init timestamp */ 91 unsigned long tk_start; /* RPC task init timestamp */
95 long tk_rtt; /* round-trip time (jiffies) */ 92 long tk_rtt; /* round-trip time (jiffies) */
96 93
94 pid_t tk_owner; /* Process id for batching tasks */
95 unsigned char tk_priority : 2;/* Task priority */
96
97#ifdef RPC_DEBUG 97#ifdef RPC_DEBUG
98 unsigned short tk_pid; /* debugging aid */ 98 unsigned short tk_pid; /* debugging aid */
99#endif 99#endif
@@ -123,6 +123,7 @@ struct rpc_task_setup {
123 const struct rpc_call_ops *callback_ops; 123 const struct rpc_call_ops *callback_ops;
124 void *callback_data; 124 void *callback_data;
125 unsigned short flags; 125 unsigned short flags;
126 signed char priority;
126}; 127};
127 128
128/* 129/*
@@ -187,10 +188,10 @@ struct rpc_task_setup {
187 * Note: if you change these, you must also change 188 * Note: if you change these, you must also change
188 * the task initialization definitions below. 189 * the task initialization definitions below.
189 */ 190 */
190#define RPC_PRIORITY_LOW 0 191#define RPC_PRIORITY_LOW (-1)
191#define RPC_PRIORITY_NORMAL 1 192#define RPC_PRIORITY_NORMAL (0)
192#define RPC_PRIORITY_HIGH 2 193#define RPC_PRIORITY_HIGH (1)
193#define RPC_NR_PRIORITY (RPC_PRIORITY_HIGH+1) 194#define RPC_NR_PRIORITY (1 + RPC_PRIORITY_HIGH - RPC_PRIORITY_LOW)
194 195
195/* 196/*
196 * RPC synchronization objects 197 * RPC synchronization objects
@@ -198,7 +199,7 @@ struct rpc_task_setup {
198struct rpc_wait_queue { 199struct rpc_wait_queue {
199 spinlock_t lock; 200 spinlock_t lock;
200 struct list_head tasks[RPC_NR_PRIORITY]; /* task queue for each priority level */ 201 struct list_head tasks[RPC_NR_PRIORITY]; /* task queue for each priority level */
201 unsigned long cookie; /* cookie of last task serviced */ 202 pid_t owner; /* process id of last task serviced */
202 unsigned char maxpriority; /* maximum priority (0 if queue is not a priority queue) */ 203 unsigned char maxpriority; /* maximum priority (0 if queue is not a priority queue) */
203 unsigned char priority; /* current priority */ 204 unsigned char priority; /* current priority */
204 unsigned char count; /* # task groups remaining serviced so far */ 205 unsigned char count; /* # task groups remaining serviced so far */