Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e1eeb98 authored by Chuck Lever's avatar Chuck Lever Committed by J. Bruce Fields
Browse files

svcrdma: Close connection when a send error occurs

parent 4500632f
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -314,7 +314,6 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp,
 err:
	svc_rdma_unmap_dma(ctxt);
	svc_rdma_put_context(ctxt, 0);
	/* Fatal error, close transport */
	return -EIO;
}

@@ -571,6 +570,7 @@ static int send_reply(struct svcxprt_rdma *rdma,
 err:
	svc_rdma_unmap_dma(ctxt);
	svc_rdma_put_context(ctxt, 1);
	pr_err("svcrdma: failed to send reply, rc=%d\n", ret);
	return -EIO;
}

@@ -642,6 +642,9 @@ int svc_rdma_sendto(struct svc_rqst *rqstp)

	ret = send_reply(rdma, rqstp, res_page, rdma_resp, ctxt, vec,
			 inline_bytes);
	if (ret < 0)
		goto err1;

	svc_rdma_put_req_map(rdma, vec);
	dprintk("svcrdma: send_reply returns %d\n", ret);
	return ret;
@@ -651,5 +654,6 @@ int svc_rdma_sendto(struct svc_rqst *rqstp)
 err0:
	svc_rdma_put_req_map(rdma, vec);
	svc_rdma_put_context(ctxt, 0);
	return ret;
	set_bit(XPT_CLOSE, &rdma->sc_xprt.xpt_flags);
	return -ENOTCONN;
}