mirror of https://gitee.com/openkylin/linux.git
Two more NFS client fixes for Linux 5.2
Stable bugfixes: - SUNRPC: Fix up calculation of client message length # 5.1+ - NFS/flexfiles: Use the correct TCP timeout for flexfiles I/O # 4.8+ -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEnZ5MQTpR7cLU7KEp18tUv7ClQOsFAl0Wf3EACgkQ18tUv7Cl QOs2ORAA5/CXFa471jUldOsHejxfFoddFBkuqf8qZ1AF3TZdFuITAsq+xydxfO5U hYzUUlOTKedEi+ISYLFs1tjU/nYRQJv7fFZxVwq6uDZ53Z/doiMLAIR67Eq7EcTY KBWA9zdldnBzb0S87+hkbmaNPR5pjqxBzLEfMmOQEAAh5pSGf5YSeUNTXLGj4wBd iXf25o1VSjUmNpSHaA3KsrqTJ4mJ7+i/17Iny1c4xRgZbJtoTm44DpceHCheJpbl DymRSgjSr0vFjJbufcKkbF2OPp1ZsnkDiKyJmZzgPOa3+TMGzisU5yiASoac6D+j gs426yEz9rvR/TMZtFS05nfu2clKuS8foLGwZelJ7XjQSXJgObCb4xf97jLIOWNb J+BWwsTmUIQS+fMUQDA+rlbyepJ+skVZpbjmUy+/Uy52oqtnYK6uTD469NdmxBwr 7z2pnCUjJFTqo6BHeCQgR5XlSt1MGDByamcVAWONS+9zJttRhfUOjq0PIOLSrsBK 5zRzJxtBoYLwP5py3zKAeV9RcvDNSgh5U6P0hhFRtHfqMUmtGeA58nNND2S6Qm3/ vAB7WZL0aVSvc3zpz7qdctitMESQNspCkMooAp/EoIime3YkqKCS+AgED9jKLhJR /5eqtr6tehh6A4dshzSlDF7cFrKyUd+ulS0IN8vt1V2TYgOQmbY= =FATk -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
c949c30b26
|
@ -18,7 +18,7 @@
|
|||
|
||||
#define NFSDBG_FACILITY NFSDBG_PNFS_LD
|
||||
|
||||
static unsigned int dataserver_timeo = NFS_DEF_TCP_RETRANS;
|
||||
static unsigned int dataserver_timeo = NFS_DEF_TCP_TIMEO;
|
||||
static unsigned int dataserver_retrans;
|
||||
|
||||
static bool ff_layout_has_available_ds(struct pnfs_layout_segment *lseg);
|
||||
|
|
|
@ -950,6 +950,8 @@ static int xs_local_send_request(struct rpc_rqst *req)
|
|||
struct sock_xprt *transport =
|
||||
container_of(xprt, struct sock_xprt, xprt);
|
||||
struct xdr_buf *xdr = &req->rq_snd_buf;
|
||||
rpc_fraghdr rm = xs_stream_record_marker(xdr);
|
||||
unsigned int msglen = rm ? req->rq_slen + sizeof(rm) : req->rq_slen;
|
||||
int status;
|
||||
int sent = 0;
|
||||
|
||||
|
@ -964,9 +966,7 @@ static int xs_local_send_request(struct rpc_rqst *req)
|
|||
|
||||
req->rq_xtime = ktime_get();
|
||||
status = xs_sendpages(transport->sock, NULL, 0, xdr,
|
||||
transport->xmit.offset,
|
||||
xs_stream_record_marker(xdr),
|
||||
&sent);
|
||||
transport->xmit.offset, rm, &sent);
|
||||
dprintk("RPC: %s(%u) = %d\n",
|
||||
__func__, xdr->len - transport->xmit.offset, status);
|
||||
|
||||
|
@ -976,7 +976,7 @@ static int xs_local_send_request(struct rpc_rqst *req)
|
|||
if (likely(sent > 0) || status == 0) {
|
||||
transport->xmit.offset += sent;
|
||||
req->rq_bytes_sent = transport->xmit.offset;
|
||||
if (likely(req->rq_bytes_sent >= req->rq_slen)) {
|
||||
if (likely(req->rq_bytes_sent >= msglen)) {
|
||||
req->rq_xmit_bytes_sent += transport->xmit.offset;
|
||||
transport->xmit.offset = 0;
|
||||
return 0;
|
||||
|
@ -1097,6 +1097,8 @@ static int xs_tcp_send_request(struct rpc_rqst *req)
|
|||
struct rpc_xprt *xprt = req->rq_xprt;
|
||||
struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt);
|
||||
struct xdr_buf *xdr = &req->rq_snd_buf;
|
||||
rpc_fraghdr rm = xs_stream_record_marker(xdr);
|
||||
unsigned int msglen = rm ? req->rq_slen + sizeof(rm) : req->rq_slen;
|
||||
bool vm_wait = false;
|
||||
int status;
|
||||
int sent;
|
||||
|
@ -1122,9 +1124,7 @@ static int xs_tcp_send_request(struct rpc_rqst *req)
|
|||
while (1) {
|
||||
sent = 0;
|
||||
status = xs_sendpages(transport->sock, NULL, 0, xdr,
|
||||
transport->xmit.offset,
|
||||
xs_stream_record_marker(xdr),
|
||||
&sent);
|
||||
transport->xmit.offset, rm, &sent);
|
||||
|
||||
dprintk("RPC: xs_tcp_send_request(%u) = %d\n",
|
||||
xdr->len - transport->xmit.offset, status);
|
||||
|
@ -1133,7 +1133,7 @@ static int xs_tcp_send_request(struct rpc_rqst *req)
|
|||
* reset the count of bytes sent. */
|
||||
transport->xmit.offset += sent;
|
||||
req->rq_bytes_sent = transport->xmit.offset;
|
||||
if (likely(req->rq_bytes_sent >= req->rq_slen)) {
|
||||
if (likely(req->rq_bytes_sent >= msglen)) {
|
||||
req->rq_xmit_bytes_sent += transport->xmit.offset;
|
||||
transport->xmit.offset = 0;
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue