Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'nfs-for-5.2-4' of git://git.linux-nfs.org/projects/anna/linux-nfs

Pull two more NFS client fixes from Anna Schumaker:
"These are both stable fixes.

One to calculate the correct client message length in the case of
partial transmissions. And the other to set the proper TCP timeout for
flexfiles"

* tag 'nfs-for-5.2-4' of git://git.linux-nfs.org/projects/anna/linux-nfs:
NFS/flexfiles: Use the correct TCP timeout for flexfiles I/O
SUNRPC: Fix up calculation of client message length

+9 -9
+1 -1
fs/nfs/flexfilelayout/flexfilelayoutdev.c
··· 18 18 19 19 #define NFSDBG_FACILITY NFSDBG_PNFS_LD 20 20 21 - static unsigned int dataserver_timeo = NFS_DEF_TCP_RETRANS; 21 + static unsigned int dataserver_timeo = NFS_DEF_TCP_TIMEO; 22 22 static unsigned int dataserver_retrans; 23 23 24 24 static bool ff_layout_has_available_ds(struct pnfs_layout_segment *lseg);
+8 -8
net/sunrpc/xprtsock.c
··· 950 950 struct sock_xprt *transport = 951 951 container_of(xprt, struct sock_xprt, xprt); 952 952 struct xdr_buf *xdr = &req->rq_snd_buf; 953 + rpc_fraghdr rm = xs_stream_record_marker(xdr); 954 + unsigned int msglen = rm ? req->rq_slen + sizeof(rm) : req->rq_slen; 953 955 int status; 954 956 int sent = 0; 955 957 ··· 966 964 967 965 req->rq_xtime = ktime_get(); 968 966 status = xs_sendpages(transport->sock, NULL, 0, xdr, 969 - transport->xmit.offset, 970 - xs_stream_record_marker(xdr), 971 - &sent); 967 + transport->xmit.offset, rm, &sent); 972 968 dprintk("RPC: %s(%u) = %d\n", 973 969 __func__, xdr->len - transport->xmit.offset, status); 974 970 ··· 976 976 if (likely(sent > 0) || status == 0) { 977 977 transport->xmit.offset += sent; 978 978 req->rq_bytes_sent = transport->xmit.offset; 979 - if (likely(req->rq_bytes_sent >= req->rq_slen)) { 979 + if (likely(req->rq_bytes_sent >= msglen)) { 980 980 req->rq_xmit_bytes_sent += transport->xmit.offset; 981 981 transport->xmit.offset = 0; 982 982 return 0; ··· 1097 1097 struct rpc_xprt *xprt = req->rq_xprt; 1098 1098 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); 1099 1099 struct xdr_buf *xdr = &req->rq_snd_buf; 1100 + rpc_fraghdr rm = xs_stream_record_marker(xdr); 1101 + unsigned int msglen = rm ? req->rq_slen + sizeof(rm) : req->rq_slen; 1100 1102 bool vm_wait = false; 1101 1103 int status; 1102 1104 int sent; ··· 1124 1122 while (1) { 1125 1123 sent = 0; 1126 1124 status = xs_sendpages(transport->sock, NULL, 0, xdr, 1127 - transport->xmit.offset, 1128 - xs_stream_record_marker(xdr), 1129 - &sent); 1125 + transport->xmit.offset, rm, &sent); 1130 1126 1131 1127 dprintk("RPC: xs_tcp_send_request(%u) = %d\n", 1132 1128 xdr->len - transport->xmit.offset, status); ··· 1133 1133 * reset the count of bytes sent. */ 1134 1134 transport->xmit.offset += sent; 1135 1135 req->rq_bytes_sent = transport->xmit.offset; 1136 - if (likely(req->rq_bytes_sent >= req->rq_slen)) { 1136 + if (likely(req->rq_bytes_sent >= msglen)) { 1137 1137 req->rq_xmit_bytes_sent += transport->xmit.offset; 1138 1138 transport->xmit.offset = 0; 1139 1139 return 0;