OSDN Git Service

Revert "svcrdma: Do not send XDR roundup bytes for a write chunk"
authorJ. Bruce Fields <bfields@redhat.com>
Wed, 23 Dec 2015 20:08:08 +0000 (15:08 -0500)
committerJ. Bruce Fields <bfields@redhat.com>
Thu, 7 Jan 2016 15:10:48 +0000 (10:10 -0500)
This reverts commit 6f18dc893981e4daab29221d6a9771f3ce2dd8c5.

Just as one example, it appears this code could do the wrong thing in
the case of a two-byte NFS READ that crosses a page boundary.

Chuck says: "In that case, nfsd would pass down an xdr_buf that has one
byte in a page, one byte in another page, and a two-byte XDR pad. The
logic introduced by this optimization would be fooled, and neither the
second byte nor the XDR pad would be written to the client."

Cc: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/xprtrdma/svc_rdma_sendto.c

index bad5eaa..969a1ab 100644 (file)
@@ -342,13 +342,6 @@ static int send_write_chunks(struct svcxprt_rdma *xprt,
                                                arg_ch->rs_handle,
                                                arg_ch->rs_offset,
                                                write_len);
-
-               /* Do not send XDR pad bytes */
-               if (chunk_no && write_len < 4) {
-                       chunk_no++;
-                       break;
-               }
-
                chunk_off = 0;
                while (write_len) {
                        ret = send_write(xprt, rqstp,