diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2019-02-19 13:21:38 -0500 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2019-02-20 17:35:58 -0500 |
commit | 6f903b111e33c4f0c349402efbd5319f52362f8e (patch) | |
tree | 331bb0fa9eec94001c7593113962738e8117fa70 /net/sunrpc/xprtsock.c | |
parent | c87dc4c73bb04cb3f86c7d60f9f576eb08514ad8 (diff) |
SUNRPC: Remove the redundant 'zerocopy' argument to xs_sendpages()
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'net/sunrpc/xprtsock.c')
-rw-r--r-- | net/sunrpc/xprtsock.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 9c6eb76b3f46..8fa74c8a4fd8 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -776,11 +776,10 @@ static int xs_send_pagedata(struct socket *sock, struct msghdr *msg, struct xdr_ | |||
776 | * @addrlen: UDP only -- length of destination address | 776 | * @addrlen: UDP only -- length of destination address |
777 | * @xdr: buffer containing this request | 777 | * @xdr: buffer containing this request |
778 | * @base: starting position in the buffer | 778 | * @base: starting position in the buffer |
779 | * @zerocopy: true if it is safe to use sendpage() | ||
780 | * @sent_p: return the total number of bytes successfully queued for sending | 779 | * @sent_p: return the total number of bytes successfully queued for sending |
781 | * | 780 | * |
782 | */ | 781 | */ |
783 | static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, struct xdr_buf *xdr, unsigned int base, bool zerocopy, int *sent_p) | 782 | static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, struct xdr_buf *xdr, unsigned int base, int *sent_p) |
784 | { | 783 | { |
785 | struct msghdr msg = { | 784 | struct msghdr msg = { |
786 | .msg_name = addr, | 785 | .msg_name = addr, |
@@ -935,7 +934,7 @@ static int xs_local_send_request(struct rpc_rqst *req) | |||
935 | req->rq_xtime = ktime_get(); | 934 | req->rq_xtime = ktime_get(); |
936 | status = xs_sendpages(transport->sock, NULL, 0, xdr, | 935 | status = xs_sendpages(transport->sock, NULL, 0, xdr, |
937 | transport->xmit.offset, | 936 | transport->xmit.offset, |
938 | true, &sent); | 937 | &sent); |
939 | dprintk("RPC: %s(%u) = %d\n", | 938 | dprintk("RPC: %s(%u) = %d\n", |
940 | __func__, xdr->len - transport->xmit.offset, status); | 939 | __func__, xdr->len - transport->xmit.offset, status); |
941 | 940 | ||
@@ -1002,7 +1001,7 @@ static int xs_udp_send_request(struct rpc_rqst *req) | |||
1002 | 1001 | ||
1003 | req->rq_xtime = ktime_get(); | 1002 | req->rq_xtime = ktime_get(); |
1004 | status = xs_sendpages(transport->sock, xs_addr(xprt), xprt->addrlen, | 1003 | status = xs_sendpages(transport->sock, xs_addr(xprt), xprt->addrlen, |
1005 | xdr, 0, true, &sent); | 1004 | xdr, 0, &sent); |
1006 | 1005 | ||
1007 | dprintk("RPC: xs_udp_send_request(%u) = %d\n", | 1006 | dprintk("RPC: xs_udp_send_request(%u) = %d\n", |
1008 | xdr->len, status); | 1007 | xdr->len, status); |
@@ -1066,7 +1065,6 @@ static int xs_tcp_send_request(struct rpc_rqst *req) | |||
1066 | struct rpc_xprt *xprt = req->rq_xprt; | 1065 | struct rpc_xprt *xprt = req->rq_xprt; |
1067 | struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); | 1066 | struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); |
1068 | struct xdr_buf *xdr = &req->rq_snd_buf; | 1067 | struct xdr_buf *xdr = &req->rq_snd_buf; |
1069 | bool zerocopy = true; | ||
1070 | bool vm_wait = false; | 1068 | bool vm_wait = false; |
1071 | int status; | 1069 | int status; |
1072 | int sent; | 1070 | int sent; |
@@ -1083,12 +1081,6 @@ static int xs_tcp_send_request(struct rpc_rqst *req) | |||
1083 | xs_pktdump("packet data:", | 1081 | xs_pktdump("packet data:", |
1084 | req->rq_svec->iov_base, | 1082 | req->rq_svec->iov_base, |
1085 | req->rq_svec->iov_len); | 1083 | req->rq_svec->iov_len); |
1086 | /* Don't use zero copy if this is a resend. If the RPC call | ||
1087 | * completes while the socket holds a reference to the pages, | ||
1088 | * then we may end up resending corrupted data. | ||
1089 | */ | ||
1090 | if (req->rq_task->tk_flags & RPC_TASK_SENT) | ||
1091 | zerocopy = false; | ||
1092 | 1084 | ||
1093 | if (test_bit(XPRT_SOCK_UPD_TIMEOUT, &transport->sock_state)) | 1085 | if (test_bit(XPRT_SOCK_UPD_TIMEOUT, &transport->sock_state)) |
1094 | xs_tcp_set_socket_timeouts(xprt, transport->sock); | 1086 | xs_tcp_set_socket_timeouts(xprt, transport->sock); |
@@ -1101,7 +1093,7 @@ static int xs_tcp_send_request(struct rpc_rqst *req) | |||
1101 | sent = 0; | 1093 | sent = 0; |
1102 | status = xs_sendpages(transport->sock, NULL, 0, xdr, | 1094 | status = xs_sendpages(transport->sock, NULL, 0, xdr, |
1103 | transport->xmit.offset, | 1095 | transport->xmit.offset, |
1104 | zerocopy, &sent); | 1096 | &sent); |
1105 | 1097 | ||
1106 | dprintk("RPC: xs_tcp_send_request(%u) = %d\n", | 1098 | dprintk("RPC: xs_tcp_send_request(%u) = %d\n", |
1107 | xdr->len - transport->xmit.offset, status); | 1099 | xdr->len - transport->xmit.offset, status); |