Commit cf187c2d authored by Trond Myklebust's avatar Trond Myklebust

SUNRPC: Don't truncate tail data unnecessarily in xdr_shrink_pagelen

If we have unused buffer space, then we should make use of that rather
than unnecessarily truncating the message.
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 42d6d8ab
......@@ -396,12 +396,21 @@ xdr_shrink_pagelen(struct xdr_buf *buf, size_t len)
struct kvec *tail;
size_t copy;
unsigned int pglen = buf->page_len;
unsigned int tailbuf_len;
tail = buf->tail;
BUG_ON (len > pglen);
tailbuf_len = buf->buflen - buf->head->iov_len - buf->page_len;
/* Shift the tail first */
if (tail->iov_len != 0) {
if (tailbuf_len != 0) {
unsigned int free_space = tailbuf_len - tail->iov_len;
if (len < free_space)
free_space = len;
tail->iov_len += free_space;
copy = len;
if (tail->iov_len > len) {
char *p = (char *)tail->iov_base + len;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment