xprt.c (8ecee4620e76aae418bfa0e8cc830e92cb559bbb) | xprt.c (f75e6745aa3084124ae1434fd7629853bdaf6798) |
---|---|
1/* 2 * linux/net/sunrpc/xprt.c 3 * 4 * This is a generic RPC call interface supporting congestion avoidance, 5 * and asynchronous calls. 6 * 7 * The interface works like this: 8 * --- 658 unchanged lines hidden (view full) --- 667 struct rpc_xprt *xprt = (struct rpc_xprt *)data; 668 669 spin_lock(&xprt->transport_lock); 670 if (!list_empty(&xprt->recv) || xprt->shutdown) 671 goto out_abort; 672 if (test_and_set_bit(XPRT_LOCKED, &xprt->state)) 673 goto out_abort; 674 spin_unlock(&xprt->transport_lock); | 1/* 2 * linux/net/sunrpc/xprt.c 3 * 4 * This is a generic RPC call interface supporting congestion avoidance, 5 * and asynchronous calls. 6 * 7 * The interface works like this: 8 * --- 658 unchanged lines hidden (view full) --- 667 struct rpc_xprt *xprt = (struct rpc_xprt *)data; 668 669 spin_lock(&xprt->transport_lock); 670 if (!list_empty(&xprt->recv) || xprt->shutdown) 671 goto out_abort; 672 if (test_and_set_bit(XPRT_LOCKED, &xprt->state)) 673 goto out_abort; 674 spin_unlock(&xprt->transport_lock); |
675 if (xprt_connecting(xprt)) 676 xprt_release_write(xprt, NULL); 677 else 678 queue_work(rpciod_workqueue, &xprt->task_cleanup); | 675 set_bit(XPRT_CONNECTION_CLOSE, &xprt->state); 676 queue_work(rpciod_workqueue, &xprt->task_cleanup); |
679 return; 680out_abort: 681 spin_unlock(&xprt->transport_lock); 682} 683 684/** 685 * xprt_connect - schedule a transport connect operation 686 * @task: RPC task that is requesting the connect --- 436 unchanged lines hidden --- | 677 return; 678out_abort: 679 spin_unlock(&xprt->transport_lock); 680} 681 682/** 683 * xprt_connect - schedule a transport connect operation 684 * @task: RPC task that is requesting the connect --- 436 unchanged lines hidden --- |