diff options
Diffstat (limited to 'net/sunrpc/sched.c')
-rw-r--r-- | net/sunrpc/sched.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index aae6907fd546..4a843b883b89 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c | |||
@@ -25,7 +25,6 @@ | |||
25 | 25 | ||
26 | #ifdef RPC_DEBUG | 26 | #ifdef RPC_DEBUG |
27 | #define RPCDBG_FACILITY RPCDBG_SCHED | 27 | #define RPCDBG_FACILITY RPCDBG_SCHED |
28 | #define RPC_TASK_MAGIC_ID 0xf00baa | ||
29 | #endif | 28 | #endif |
30 | 29 | ||
31 | /* | 30 | /* |
@@ -237,7 +236,6 @@ static void rpc_task_set_debuginfo(struct rpc_task *task) | |||
237 | { | 236 | { |
238 | static atomic_t rpc_pid; | 237 | static atomic_t rpc_pid; |
239 | 238 | ||
240 | task->tk_magic = RPC_TASK_MAGIC_ID; | ||
241 | task->tk_pid = atomic_inc_return(&rpc_pid); | 239 | task->tk_pid = atomic_inc_return(&rpc_pid); |
242 | } | 240 | } |
243 | #else | 241 | #else |
@@ -360,9 +358,6 @@ static void __rpc_do_wake_up_task(struct rpc_wait_queue *queue, struct rpc_task | |||
360 | dprintk("RPC: %5u __rpc_wake_up_task (now %lu)\n", | 358 | dprintk("RPC: %5u __rpc_wake_up_task (now %lu)\n", |
361 | task->tk_pid, jiffies); | 359 | task->tk_pid, jiffies); |
362 | 360 | ||
363 | #ifdef RPC_DEBUG | ||
364 | BUG_ON(task->tk_magic != RPC_TASK_MAGIC_ID); | ||
365 | #endif | ||
366 | /* Has the task been executed yet? If not, we cannot wake it up! */ | 361 | /* Has the task been executed yet? If not, we cannot wake it up! */ |
367 | if (!RPC_IS_ACTIVATED(task)) { | 362 | if (!RPC_IS_ACTIVATED(task)) { |
368 | printk(KERN_ERR "RPC: Inactive task (%p) being woken up!\n", task); | 363 | printk(KERN_ERR "RPC: Inactive task (%p) being woken up!\n", task); |
@@ -834,7 +829,7 @@ static void rpc_init_task(struct rpc_task *task, const struct rpc_task_setup *ta | |||
834 | } | 829 | } |
835 | 830 | ||
836 | /* starting timestamp */ | 831 | /* starting timestamp */ |
837 | task->tk_start = jiffies; | 832 | task->tk_start = ktime_get(); |
838 | 833 | ||
839 | dprintk("RPC: new task initialized, procpid %u\n", | 834 | dprintk("RPC: new task initialized, procpid %u\n", |
840 | task_pid_nr(current)); | 835 | task_pid_nr(current)); |
@@ -856,16 +851,23 @@ struct rpc_task *rpc_new_task(const struct rpc_task_setup *setup_data) | |||
856 | 851 | ||
857 | if (task == NULL) { | 852 | if (task == NULL) { |
858 | task = rpc_alloc_task(); | 853 | task = rpc_alloc_task(); |
859 | if (task == NULL) | 854 | if (task == NULL) { |
860 | goto out; | 855 | rpc_release_calldata(setup_data->callback_ops, |
856 | setup_data->callback_data); | ||
857 | return ERR_PTR(-ENOMEM); | ||
858 | } | ||
861 | flags = RPC_TASK_DYNAMIC; | 859 | flags = RPC_TASK_DYNAMIC; |
862 | } | 860 | } |
863 | 861 | ||
864 | rpc_init_task(task, setup_data); | 862 | rpc_init_task(task, setup_data); |
863 | if (task->tk_status < 0) { | ||
864 | int err = task->tk_status; | ||
865 | rpc_put_task(task); | ||
866 | return ERR_PTR(err); | ||
867 | } | ||
865 | 868 | ||
866 | task->tk_flags |= flags; | 869 | task->tk_flags |= flags; |
867 | dprintk("RPC: allocated task %p\n", task); | 870 | dprintk("RPC: allocated task %p\n", task); |
868 | out: | ||
869 | return task; | 871 | return task; |
870 | } | 872 | } |
871 | 873 | ||
@@ -909,9 +911,6 @@ EXPORT_SYMBOL_GPL(rpc_put_task); | |||
909 | 911 | ||
910 | static void rpc_release_task(struct rpc_task *task) | 912 | static void rpc_release_task(struct rpc_task *task) |
911 | { | 913 | { |
912 | #ifdef RPC_DEBUG | ||
913 | BUG_ON(task->tk_magic != RPC_TASK_MAGIC_ID); | ||
914 | #endif | ||
915 | dprintk("RPC: %5u release task\n", task->tk_pid); | 914 | dprintk("RPC: %5u release task\n", task->tk_pid); |
916 | 915 | ||
917 | if (!list_empty(&task->tk_task)) { | 916 | if (!list_empty(&task->tk_task)) { |
@@ -923,9 +922,6 @@ static void rpc_release_task(struct rpc_task *task) | |||
923 | } | 922 | } |
924 | BUG_ON (RPC_IS_QUEUED(task)); | 923 | BUG_ON (RPC_IS_QUEUED(task)); |
925 | 924 | ||
926 | #ifdef RPC_DEBUG | ||
927 | task->tk_magic = 0; | ||
928 | #endif | ||
929 | /* Wake up anyone who is waiting for task completion */ | 925 | /* Wake up anyone who is waiting for task completion */ |
930 | rpc_mark_complete_task(task); | 926 | rpc_mark_complete_task(task); |
931 | 927 | ||