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
..
2014-07-08 17:14:27 -04:00
2016-10-07 18:46:30 -07:00
2016-08-04 19:59:06 -04:00
2016-03-18 11:42:53 -04:00
2014-08-17 12:00:12 -04:00
2017-06-05 16:56:38 +02:00
2017-02-22 11:44:32 -08:00
2017-02-27 18:43:47 -08:00
2017-08-24 22:13:50 -04:00
2017-06-28 13:34:15 -04:00
2016-05-29 19:08:00 -04:00
2016-01-14 17:32:51 -05:00