diff options
Diffstat (limited to 'net/sunrpc/clnt.c')
| -rw-r--r-- | net/sunrpc/clnt.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index b05df36692f..fa48c60aef2 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -717,6 +717,15 @@ void rpc_task_set_client(struct rpc_task *task, struct rpc_clnt *clnt)  		atomic_inc(&clnt->cl_count);  		if (clnt->cl_softrtry)  			task->tk_flags |= RPC_TASK_SOFT; +		if (sk_memalloc_socks()) { +			struct rpc_xprt *xprt; + +			rcu_read_lock(); +			xprt = rcu_dereference(clnt->cl_xprt); +			if (xprt->swapper) +				task->tk_flags |= RPC_TASK_SWAPPER; +			rcu_read_unlock(); +		}  		/* Add to the client's list of all tasks */  		spin_lock(&clnt->cl_lock);  		list_add_tail(&task->tk_task, &clnt->cl_tasks);  |