Lock-free encoding and independent svc reply queue.

Implements an out-of-line, blocking reply queue for svc_vc
transports.

It -would- appear logical to add an xdr_ioq_truncate operation
permitting a caller to discard bytes at the end of the stream, if
the need for it arose.

Works, maybe consolidate vrec->off and vrec->len, which now appear the
same.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>

Conflicts:
	src/clnt_vc.c
	src/svc_vc.c

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Add extend-buffer interface.

As a workaround for current GSS mic and wrap interfaces which
cannot deal with segmented buffers, allow growing a single buffer
segment.

Use this only when auth flavor is RPCSEC_GSS.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Avoid use of uninitialized __rpc_sockinfo.

Moves __rpc2sockinfo call up in makefd_xprt.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Fix refcnt underruns.

The initial refcnt should be 1, not 0.  Also, must be initialized
in vrec_next, in the non-extend case.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Dont smash the stack in ioq_flushv.

There is no way to assume an iovcnt in advance, but it will be
small.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Use configured sendsize + 8K for ioq max segment size.

Pending support for GSSAPI iov interfaces, svc_vc_reply ecodes
in one buffer segment.  Since most replies are small, an initial
buffer segment of 8K ("page size") is tried first.  If a reply
would exceed this, it is reallocated with a larger size, which
with this change, is of length MaxRPCSendBufferSize + 8K.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Remove unused VREC_NIOVS.

(Rebaseme.)

Signed-off-by: Matt Benjamin <matt@linuxbox.com>