Commit 24c5d9d7 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

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

parent f344f6df
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -276,6 +276,7 @@ void rpc_show_tasks(void);
#endif
int		rpc_init_mempool(void);
void		rpc_destroy_mempool(void);
extern struct workqueue_struct *rpciod_workqueue;

static inline void rpc_exit(struct rpc_task *task, int status)
{
+3 −2
Original line number Diff line number Diff line
@@ -91,7 +91,8 @@ rpc_queue_upcall(struct inode *inode, struct rpc_pipe_msg *msg)
		res = 0;
	} else if (rpci->flags & RPC_PIPE_WAIT_FOR_OPEN) {
		if (list_empty(&rpci->pipe))
			schedule_delayed_work(&rpci->queue_timeout,
			queue_delayed_work(rpciod_workqueue,
					&rpci->queue_timeout,
					RPC_UPCALL_TIMEOUT);
		list_add_tail(&msg->list, &rpci->pipe);
		rpci->pipelen += msg->len;
@@ -132,7 +133,7 @@ rpc_close_pipes(struct inode *inode)
		if (ops->release_pipe)
			ops->release_pipe(inode);
		cancel_delayed_work(&rpci->queue_timeout);
		flush_scheduled_work();
		flush_workqueue(rpciod_workqueue);
	}
	rpc_inode_setowner(inode, NULL);
	mutex_unlock(&inode->i_mutex);
+1 −1
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ static LIST_HEAD(all_tasks);
 */
static DECLARE_MUTEX(rpciod_sema);
static unsigned int		rpciod_users;
static struct workqueue_struct *rpciod_workqueue;
struct workqueue_struct *rpciod_workqueue;

/*
 * Spinlock for other critical sections of code.