Chuck Lever eae03e2ac8 nfsd: Incoming xdr_bufs may have content in tail buffer
Since the beginning, svcsock has built a received RPC Call message
by populating the xdr_buf's head, then placing the remaining
message bytes in the xdr_buf's page list. The xdr_buf's tail is
never populated.

This means that an NFSv4 COMPOUND containing an NFS WRITE operation
plus trailing operations has a page list that contains the WRITE
data payload followed by the trailing operations. NFSv4 XDR decoders
will not look in the xdr_buf's tail, ever, because svcsock never put
anything there.

To support transports that can pass the write payload in the
xdr_buf's pagelist and trailing content in the xdr_buf's tail,
introduce logic in READ_BUF that switches to the xdr_buf's tail vec
when the decoder runs out of content in rq_arg.pages.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2017-09-05 15:15:29 -04:00
..
2017-07-11 06:08:58 -04:00
2017-07-11 06:06:17 -04:00
2017-07-17 14:54:59 +02:00
2017-07-17 19:23:18 -07:00
2017-07-25 08:51:57 -07:00
2017-07-06 16:24:35 -07:00
2017-08-24 22:13:50 -04:00
2017-07-07 20:09:10 -04:00
2017-07-06 03:31:46 -04:00
2017-07-06 03:31:46 -04:00
2017-04-17 12:52:27 -04:00
2017-07-07 19:38:17 -07:00
2017-07-07 13:48:18 -07:00
2017-07-14 22:57:32 -07:00
2017-06-22 11:44:55 -04:00
2017-07-06 03:27:09 -04:00
2017-07-06 03:27:09 -04:00
2017-05-08 17:15:12 -07:00
2017-06-09 16:28:01 -04:00
2017-07-11 06:09:21 -04:00
2017-07-05 18:44:23 -04:00