/**
  * svc_rdma_send_reply_chunk - Write all segments in the Reply chunk
  * @rdma: controlling RDMA transport
- * @rp_ch: Reply chunk provided by client
- * @writelist: true if client provided a Write list
+ * @rctxt: Write and Reply chunks from client
  * @xdr: xdr_buf containing an RPC Reply
  *
  * Returns a non-negative number of bytes the chunk consumed, or
  *     %-ENOTCONN if posting failed (connection is lost),
  *     %-EIO if rdma_rw initialization failed (DMA mapping, etc).
  */
-int svc_rdma_send_reply_chunk(struct svcxprt_rdma *rdma, __be32 *rp_ch,
-                             bool writelist, struct xdr_buf *xdr)
+int svc_rdma_send_reply_chunk(struct svcxprt_rdma *rdma,
+                             const struct svc_rdma_recv_ctxt *rctxt,
+                             struct xdr_buf *xdr)
 {
        struct svc_rdma_write_info *info;
        int consumed, ret;
 
-       info = svc_rdma_write_info_alloc(rdma, rp_ch);
+       info = svc_rdma_write_info_alloc(rdma, rctxt->rc_reply_chunk);
        if (!info)
                return -ENOMEM;
 
        /* Send the page list in the Reply chunk only if the
         * client did not provide Write chunks.
         */
-       if (!writelist && xdr->page_len) {
+       if (!rctxt->rc_write_list && xdr->page_len) {
                ret = svc_rdma_send_xdr_pagelist(info, xdr,
                                                 xdr->head[0].iov_len,
                                                 xdr->page_len);
 
                svc_rdma_xdr_encode_write_list(rdma_resp, wr_lst, ret);
        }
        if (rp_ch) {
-               ret = svc_rdma_send_reply_chunk(rdma, rp_ch, wr_lst, xdr);
+               ret = svc_rdma_send_reply_chunk(rdma, rctxt, &rqstp->rq_res);
                if (ret < 0)
                        goto err2;
                svc_rdma_xdr_encode_reply_chunk(rdma_resp, rp_ch, ret);