summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/sched.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-06-13 16:29:25 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-06-13 16:29:25 +0000
commitdb7d4daea91e105e3859cf461d7e53b9b77454b2 (patch)
tree9bb65b95440af09e8aca63abe56970dd3360cc57 /net/sunrpc/sched.c
parent9c1c01ead627bdda9211c9abd5b758d6c687d8ac (diff)
Merge with Linux 2.2.8.
Diffstat (limited to 'net/sunrpc/sched.c')
-rw-r--r--net/sunrpc/sched.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
index 9d4bcb118..222a3f9ec 100644
--- a/net/sunrpc/sched.c
+++ b/net/sunrpc/sched.c
@@ -174,6 +174,7 @@ rpc_make_runnable(struct rpc_task *task)
printk(KERN_ERR "RPC: task w/ running timer in rpc_make_runnable!!\n");
return;
}
+ task->tk_flags |= RPC_TASK_RUNNING;
if (RPC_IS_ASYNC(task)) {
int status;
status = rpc_add_wait_queue(&schedq, task);
@@ -186,7 +187,6 @@ rpc_make_runnable(struct rpc_task *task)
} else {
wake_up(&task->tk_wait);
}
- task->tk_flags |= RPC_TASK_RUNNING;
}
@@ -447,7 +447,10 @@ __rpc_execute(struct rpc_task *task)
task->tk_pid);
if (current->pid == rpciod_pid)
printk(KERN_ERR "RPC: rpciod waiting on sync task!\n");
- sleep_on(&task->tk_wait);
+
+ sti();
+ __wait_event(task->tk_wait, RPC_IS_RUNNING(task));
+ cli();
/*
* When the task received a signal, remove from
@@ -1000,8 +1003,8 @@ void rpc_show_tasks(void)
wreq->wb_flags, wreq->wb_pid, wreq->wb_page,
wreq->wb_offset, wreq->wb_bytes);
printk(" name=%s/%s\n",
- wreq->wb_dentry->d_parent->d_name.name,
- wreq->wb_dentry->d_name.name);
+ wreq->wb_file->f_dentry->d_parent->d_name.name,
+ wreq->wb_file->f_dentry->d_name.name);
}
}
#endif