aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc
diff options
context:
space:
mode:
Diffstat (limited to 'net/sunrpc')
-rw-r--r--net/sunrpc/xprt.c14
-rw-r--r--net/sunrpc/xprtsock.c6
2 files changed, 9 insertions, 11 deletions
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index 9c45c522e3ef..57c5e77b155e 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -74,7 +74,7 @@ __xprt_lock_write(struct rpc_xprt *xprt, struct rpc_task *task)
74{ 74{
75 struct rpc_rqst *req = task->tk_rqstp; 75 struct rpc_rqst *req = task->tk_rqstp;
76 76
77 if (test_and_set_bit(XPRT_LOCKED, &xprt->sockstate)) { 77 if (test_and_set_bit(XPRT_LOCKED, &xprt->state)) {
78 if (task == xprt->snd_task) 78 if (task == xprt->snd_task)
79 return 1; 79 return 1;
80 goto out_sleep; 80 goto out_sleep;
@@ -88,7 +88,7 @@ __xprt_lock_write(struct rpc_xprt *xprt, struct rpc_task *task)
88 return 1; 88 return 1;
89 } 89 }
90 smp_mb__before_clear_bit(); 90 smp_mb__before_clear_bit();
91 clear_bit(XPRT_LOCKED, &xprt->sockstate); 91 clear_bit(XPRT_LOCKED, &xprt->state);
92 smp_mb__after_clear_bit(); 92 smp_mb__after_clear_bit();
93out_sleep: 93out_sleep:
94 dprintk("RPC: %4d failed to lock socket %p\n", task->tk_pid, xprt); 94 dprintk("RPC: %4d failed to lock socket %p\n", task->tk_pid, xprt);
@@ -118,7 +118,7 @@ __xprt_lock_write_next(struct rpc_xprt *xprt)
118{ 118{
119 struct rpc_task *task; 119 struct rpc_task *task;
120 120
121 if (test_and_set_bit(XPRT_LOCKED, &xprt->sockstate)) 121 if (test_and_set_bit(XPRT_LOCKED, &xprt->state))
122 return; 122 return;
123 if (!xprt->nocong && RPCXPRT_CONGESTED(xprt)) 123 if (!xprt->nocong && RPCXPRT_CONGESTED(xprt))
124 goto out_unlock; 124 goto out_unlock;
@@ -139,7 +139,7 @@ __xprt_lock_write_next(struct rpc_xprt *xprt)
139 } 139 }
140out_unlock: 140out_unlock:
141 smp_mb__before_clear_bit(); 141 smp_mb__before_clear_bit();
142 clear_bit(XPRT_LOCKED, &xprt->sockstate); 142 clear_bit(XPRT_LOCKED, &xprt->state);
143 smp_mb__after_clear_bit(); 143 smp_mb__after_clear_bit();
144} 144}
145 145
@@ -152,7 +152,7 @@ __xprt_release_write(struct rpc_xprt *xprt, struct rpc_task *task)
152 if (xprt->snd_task == task) { 152 if (xprt->snd_task == task) {
153 xprt->snd_task = NULL; 153 xprt->snd_task = NULL;
154 smp_mb__before_clear_bit(); 154 smp_mb__before_clear_bit();
155 clear_bit(XPRT_LOCKED, &xprt->sockstate); 155 clear_bit(XPRT_LOCKED, &xprt->state);
156 smp_mb__after_clear_bit(); 156 smp_mb__after_clear_bit();
157 __xprt_lock_write_next(xprt); 157 __xprt_lock_write_next(xprt);
158 } 158 }
@@ -312,11 +312,11 @@ xprt_init_autodisconnect(unsigned long data)
312 spin_lock(&xprt->transport_lock); 312 spin_lock(&xprt->transport_lock);
313 if (!list_empty(&xprt->recv) || xprt->shutdown) 313 if (!list_empty(&xprt->recv) || xprt->shutdown)
314 goto out_abort; 314 goto out_abort;
315 if (test_and_set_bit(XPRT_LOCKED, &xprt->sockstate)) 315 if (test_and_set_bit(XPRT_LOCKED, &xprt->state))
316 goto out_abort; 316 goto out_abort;
317 spin_unlock(&xprt->transport_lock); 317 spin_unlock(&xprt->transport_lock);
318 /* Let keventd close the socket */ 318 /* Let keventd close the socket */
319 if (test_bit(XPRT_CONNECTING, &xprt->sockstate) != 0) 319 if (xprt_connecting(xprt))
320 xprt_release_write(xprt, NULL); 320 xprt_release_write(xprt, NULL);
321 else 321 else
322 schedule_work(&xprt->task_cleanup); 322 schedule_work(&xprt->task_cleanup);
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index bc90caab6088..76a33b54f436 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -925,9 +925,7 @@ out:
925 else 925 else
926 rpc_wake_up(&xprt->pending); 926 rpc_wake_up(&xprt->pending);
927out_clear: 927out_clear:
928 smp_mb__before_clear_bit(); 928 xprt_clear_connecting(xprt);
929 clear_bit(XPRT_CONNECTING, &xprt->sockstate);
930 smp_mb__after_clear_bit();
931} 929}
932 930
933/** 931/**
@@ -940,7 +938,7 @@ static void xs_connect(struct rpc_task *task)
940{ 938{
941 struct rpc_xprt *xprt = task->tk_xprt; 939 struct rpc_xprt *xprt = task->tk_xprt;
942 940
943 if (!test_and_set_bit(XPRT_CONNECTING, &xprt->sockstate)) { 941 if (!xprt_test_and_set_connecting(xprt)) {
944 if (xprt->sock != NULL) { 942 if (xprt->sock != NULL) {
945 dprintk("RPC: xs_connect delayed xprt %p\n", xprt); 943 dprintk("RPC: xs_connect delayed xprt %p\n", xprt);
946 schedule_delayed_work(&xprt->sock_connect, 944 schedule_delayed_work(&xprt->sock_connect,