the only call thar really needs a big encodebuf is WRITE. So give each
PDU its private encodebuf. This avoids the need to memcpy the data from
the static rpc->encodebuf to the pdu->outdata.data.
Signed-off-by: Peter Lieven <pl@kamp.de>
The NFS spec states:
"The ratio of the directory entry size to the size of the attributes plus the
size of the file handle is usually at least 8 to 1."
Though implementation dependent the spec implies that the previous 1 to 1 ratio
could have a detrimental impact on the performance of the server due to most of
the data per VOP_READDIR call being wasted.
The Linux kernel uses the 8 to 1 ratio.
Signed-off-by: Stefan Blanke <stefan.blanke@framestore.com>
Signed-off-by: Mark Hills <mark.hills@framestore.com>
All current platforms have a quad type that maps to a 64bit scalar.
But there are platforms where quad maps to a 64bit non-scalar.
Replace quad with int64 in the protocol definitions and the ZDR layer
so that these fields will map to a 64 bit scalar also on those platforms
where quad can not be used.
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
Map NFS3ERR_NOTEMPTY to ENOTEMPTY rather than EEXIST. POSIX allows
either EEXIST or ENOTEMPTY for rmdir on a non-empty directory but
ENOTEMPTY is more explicit and in line with Linux, OS X, FreeBSD and
OpenBSD's behavior.
Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
Include the zdr header from all raw lowlevel headers so that we don't have to
include it manually from apps.
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
- Use _stat64 on windows so file sizes become 64bit always.
- Increase default marshalling buffer so we can marshall large PDUs.
- RPC layer support for NFSv2
- Win32 updates and fixes
- Add URL parsing functions and URL argument support.
- New utility: nfs-io
- nfs-ls enhancements
- RPC layer support for NSM
- Add example FUSE filesystem.
- Minor fixes.
Oh dear. It is really difficult for rpc and tirpc implementors to get
64 bit types right. Sigh.
I am tired of fighting broken ti-rpc libraries under linux and others
that do random corruption on xdr_u_quad_t and friends
so lets just override that shit and replace it with our own, non-broken,
implementation of a 64 bit xdr accessor.
This patch switches libnfs over to use precompiled rpcgen files
and using ZDR. ZDR is a trivial reimplementation of XDR that is built in
into libnfs.
This removes the dependencies of rpc/xdr completely and allow us to build on any
system, even systems where rpcgen and librpc/libxdr are not generally available.