freebsd-dev/sys/fs/nfs
Rick Macklem 5218d82c81 nfscl: Add support for a NFSv4 AppendWrite RPC
For IO_APPEND VOP_WRITE()s, the code first does a
Getattr RPC to acquire the file's size, before it
can do the Write RPC.

Although NFS does not have an append write operation,
an NFSv4 compound can use a Verify operation to check
that the client's notion of the file's size is
correct, followed by the Write operation.

This patch modifies the NFSv4 client to use an Appendwrite
RPC, which does a Verify to check the file's size before
doing the Write.  This avoids the need for a Getattr RPC
to preceed this RPC and reduces the RPC count by half for
IO_APPEND writes, so long as the client knows the file's
size.

The nfsd structure was moved from the stack to be malloc()'d,
since the kernel stack limit was being exceeded.

While here, fix the types of a few variables, although
there should not be any semantics change caused by these
type changes.
2022-04-30 13:49:23 -07:00
..
nfs_commonacl.c nfsd: Do not accept audit/alarm ACEs for the NFSv4 server 2022-01-11 09:40:07 -08:00
nfs_commonkrpc.c nfscl: Sanity check the Sequence slotid in reply 2021-11-27 15:02:04 -08:00
nfs_commonport.c nfscl: Add support for a NFSv4 AppendWrite RPC 2022-04-05 08:11:37 -07:00
nfs_commonsubs.c nfscl: Add support for a NFSv4 AppendWrite RPC 2022-04-08 13:59:05 -07:00
nfs_var.h nfscl: Add support for a NFSv4 AppendWrite RPC 2022-04-30 13:49:23 -07:00
nfs.h nfsd: Add sysctl to set maximum I/O size up to 1Mbyte 2021-07-16 15:01:03 -07:00
nfscl.h nfsv4 client: do the BindConnectionToSession as required 2021-04-11 14:34:57 -07:00
nfsclstate.h nfscl: Do pNFS layout return_on_close synchronously 2021-10-31 16:31:31 -07:00
nfsdport.h Do not copy vp into f_data for DTYPE_VNODE files. 2020-09-15 21:55:21 +00:00
nfskpiport.h Remove vfs_statfs and vnode_mount macros from NFS 2020-06-17 16:20:19 +00:00
nfsm_subs.h fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
nfsport.h nfscl: Clean up the code by removing unused arguments 2022-04-13 07:43:13 -07:00
nfsproto.h Unbreak the build: Also define NFSV42_OLDNPROCS here. 2022-04-05 11:54:20 -06:00
nfsrvcache.h Replace all instances of the typedef mbuf_t with "struct mbuf *". 2020-04-17 21:17:51 +00:00
nfsrvstate.h nfsd: Fix the NFSv4.2 pNFS MDS server for NFSERR_NOSPC via LayoutError 2021-11-08 15:58:00 -08:00
nfsv4_errstr.h Add missing comma in nfsv4_errstr 2020-01-13 21:49:27 +00:00
rpcv2.h fs: clean up empty lines in .c and .h files 2020-09-01 21:18:40 +00:00
xdr_subs.h nfs: don't truncate directory cookies to 32-bits in the NFS server 2021-12-15 20:54:57 -07:00