提交 24c5d9d7 编写于 作者: T Trond Myklebust

SUNRPC: Run rpci->queue_timeout on the rpciod workqueue instead of generic

Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
上级 f344f6df
...@@ -276,6 +276,7 @@ void rpc_show_tasks(void); ...@@ -276,6 +276,7 @@ void rpc_show_tasks(void);
#endif #endif
int rpc_init_mempool(void); int rpc_init_mempool(void);
void rpc_destroy_mempool(void); void rpc_destroy_mempool(void);
extern struct workqueue_struct *rpciod_workqueue;
static inline void rpc_exit(struct rpc_task *task, int status) static inline void rpc_exit(struct rpc_task *task, int status)
{ {
......
...@@ -91,7 +91,8 @@ rpc_queue_upcall(struct inode *inode, struct rpc_pipe_msg *msg) ...@@ -91,7 +91,8 @@ rpc_queue_upcall(struct inode *inode, struct rpc_pipe_msg *msg)
res = 0; res = 0;
} else if (rpci->flags & RPC_PIPE_WAIT_FOR_OPEN) { } else if (rpci->flags & RPC_PIPE_WAIT_FOR_OPEN) {
if (list_empty(&rpci->pipe)) if (list_empty(&rpci->pipe))
schedule_delayed_work(&rpci->queue_timeout, queue_delayed_work(rpciod_workqueue,
&rpci->queue_timeout,
RPC_UPCALL_TIMEOUT); RPC_UPCALL_TIMEOUT);
list_add_tail(&msg->list, &rpci->pipe); list_add_tail(&msg->list, &rpci->pipe);
rpci->pipelen += msg->len; rpci->pipelen += msg->len;
...@@ -132,7 +133,7 @@ rpc_close_pipes(struct inode *inode) ...@@ -132,7 +133,7 @@ rpc_close_pipes(struct inode *inode)
if (ops->release_pipe) if (ops->release_pipe)
ops->release_pipe(inode); ops->release_pipe(inode);
cancel_delayed_work(&rpci->queue_timeout); cancel_delayed_work(&rpci->queue_timeout);
flush_scheduled_work(); flush_workqueue(rpciod_workqueue);
} }
rpc_inode_setowner(inode, NULL); rpc_inode_setowner(inode, NULL);
mutex_unlock(&inode->i_mutex); mutex_unlock(&inode->i_mutex);
......
...@@ -64,7 +64,7 @@ static LIST_HEAD(all_tasks); ...@@ -64,7 +64,7 @@ static LIST_HEAD(all_tasks);
*/ */
static DECLARE_MUTEX(rpciod_sema); static DECLARE_MUTEX(rpciod_sema);
static unsigned int rpciod_users; static unsigned int rpciod_users;
static struct workqueue_struct *rpciod_workqueue; struct workqueue_struct *rpciod_workqueue;
/* /*
* Spinlock for other critical sections of code. * Spinlock for other critical sections of code.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册