|
@@ -309,12 +309,15 @@ void xprt_complete_bc_request(struct rpc_rqst *req, uint32_t copied)
|
|
struct rpc_xprt *xprt = req->rq_xprt;
|
|
struct rpc_xprt *xprt = req->rq_xprt;
|
|
struct svc_serv *bc_serv = xprt->bc_serv;
|
|
struct svc_serv *bc_serv = xprt->bc_serv;
|
|
|
|
|
|
|
|
+ spin_lock(&xprt->bc_pa_lock);
|
|
|
|
+ list_del(&req->rq_bc_pa_list);
|
|
|
|
+ spin_unlock(&xprt->bc_pa_lock);
|
|
|
|
+
|
|
req->rq_private_buf.len = copied;
|
|
req->rq_private_buf.len = copied;
|
|
set_bit(RPC_BC_PA_IN_USE, &req->rq_bc_pa_state);
|
|
set_bit(RPC_BC_PA_IN_USE, &req->rq_bc_pa_state);
|
|
|
|
|
|
dprintk("RPC: add callback request to list\n");
|
|
dprintk("RPC: add callback request to list\n");
|
|
spin_lock(&bc_serv->sv_cb_lock);
|
|
spin_lock(&bc_serv->sv_cb_lock);
|
|
- list_del(&req->rq_bc_pa_list);
|
|
|
|
list_add(&req->rq_bc_list, &bc_serv->sv_cb_list);
|
|
list_add(&req->rq_bc_list, &bc_serv->sv_cb_list);
|
|
wake_up(&bc_serv->sv_cb_waitq);
|
|
wake_up(&bc_serv->sv_cb_waitq);
|
|
spin_unlock(&bc_serv->sv_cb_lock);
|
|
spin_unlock(&bc_serv->sv_cb_lock);
|