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 ---