These patches apply in order to 2.6.6-rc3 with Trond's NFS4_ALL patch already applied. These patches are experimental, and may change at any time. Use at your own risk.
The "cp" program uses fstat(3) to determine the optimal blocksize to use when copying files. Previously, the NFS client returned the server's disk blocksize for this value (usually 512 bytes), but using the value set for the wsize mount option works much better. This patch makes that change, and adds support for reporting the server's disk blocksize in the f_frsize field returned by statfs(2).
fs/nfs/inode.c | 14 ++++++-------- include/linux/nfs_fs_sb.h | 1 + 2 files changed, 7 insertions(+), 8 deletions(-)
The nfs_readdir implementation contains several inefficiencies that result from having to walk a directory from the beginning each time getdents(3) is called. This patch recommends some changes that eliminate those efficiencies.
fs/nfs/dir.c | 86 +++++++++++++++++++++------------ fs/nfs/nfs2xdr.c | 2 fs/nfs/nfs3proc.c | 2 fs/nfs/nfs3xdr.c | 6 +- fs/nfs/nfs4proc.c | 2 fs/nfs/nfs4xdr.c | 3 - fs/nfs/proc.c | 2 include/linux/nfs_xdr.h | 2 8 files changed, 65 insertions(+), 40 deletions(-)
This patch simplifies the logic that handles mount failures.
fs/nfs/inode.c | 126 ++++++++++++++++-------------------------- 1 files changed, 50 insertions(+), 76 deletions(-)
This patch introduces a new subsystem under /sys. The subsystem allows file system implementations to register their own subsystem under /sys/fs.
fs/dcache.c | 1 + fs/filesystems.c | 17 ++++++++++++++++- include/linux/fs.h | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-)
This patch adds support to the NFS client for its own /sys/fs subsystem where it can register each mount point as a kobject subdirectory. Each mount subdirectory contains attribute files that provide information about the mount (how long it has been mounted, the capabilities of the server on the remote end, and so on).
fs/nfs/Makefile | 2 fs/nfs/idmap.c | 2 fs/nfs/inode.c | 89 +++- fs/nfs/sys.c | 611 +++++++++++++++++++++++++++++++ include/linux/nfs_fs.h | 13 include/linux/nfs_fs_sb.h | 8 include/linux/nfs_page.h | 2 7 files changed, 693 insertions(+), 34 deletions(-)
This patch provides support in the NFS client for reporting various I/O statistics. The statistics are exposed in a directory under each mount point subdirectory in /sys/fs/nfs.
fs/nfs/dir.c | 4 fs/nfs/direct.c | 5 fs/nfs/file.c | 4 fs/nfs/read.c | 3 fs/nfs/sys.c | 290 ++++++++++++++++++++++++++++++- fs/nfs/write.c | 4 include/linux/nfs_fs.h | 2 include/linux/nfs_fs_sb.h | 24 ++ 8 files changed, 335 insertions(+), 1 deletion(-)
This patch has not yet been written. It provides a mechanism for exporting RPC program and transport statistics via /sys and kobjects.
This patch introduces a transport switch into the kernel RPC client. Such a switch will allow support for RPC over 10GbE, IPsec offload, multiple sockets, and transports capable of direct data placement. The first patch in the series moves socket-specific code into a separate source file, net/sunrpc/sock.c.
include/linux/sunrpc/xdr.h | 2 include/linux/sunrpc/xprt.h | 36 net/sunrpc/Makefile | 2 net/sunrpc/clnt.c | 2 net/sunrpc/sock.c | 1088 +++++++++++++++++++++++++++++ net/sunrpc/xdr.c | 111 -- net/sunrpc/xprt.c | 822 --------------------- 7 files changed, 1154 insertions(+), 909 deletions(-)
This patch augments the previous patch by renaming some data structures and changing some comments to reflect the new transport switch mechanism.
include/linux/sunrpc/xdr.h | 3 include/linux/sunrpc/xprt.h | 54 +++++++-- net/sunrpc/auth.c | 1 net/sunrpc/auth_gss/auth_gss.c | 2 net/sunrpc/auth_gss/gss_mech_switch.c | 1 net/sunrpc/auth_gss/gss_pseudoflavors.c | 1 net/sunrpc/auth_gss/sunrpcgss_syms.c | 1 net/sunrpc/auth_null.c | 2 net/sunrpc/auth_unix.c | 2 net/sunrpc/sock.c | 24 ++-- net/sunrpc/sunrpc_syms.c | 1 net/sunrpc/xprt.c | 97 ++++++++--------- 12 files changed, 99 insertions(+), 90 deletions(-)
Now that we have a transport switch, we can get rid of some of the flags that control the generic behavior and features of transports, and bury that functionality in transport-specific code where it belongs. The first flag to go is the stream flag.
fs/lockd/host.c | 8 +-- include/linux/sunrpc/xprt.h | 9 +-- net/sunrpc/auth_gss/auth_gss.c | 4 - net/sunrpc/clnt.c | 3 - net/sunrpc/sock.c | 69 ++++++++++++++++++++------ net/sunrpc/xprt.c | 29 +--------- 6 files changed, 72 insertions(+), 50 deletions(-)
Some transports may choose to use pre-allocated buffers for encoding, sending, receiving, and unmarshalling RPC messages. This patch adds RPC transport switch support for replacing buffer management.
include/linux/sunrpc/sched.h | 2 - include/linux/sunrpc/xprt.h | 9 +++----- net/sunrpc/clnt.c | 14 +++++++----- net/sunrpc/sched.c | 31 ++++++++++++++-------------- net/sunrpc/sock.c | 5 ++++ net/sunrpc/xprt.c | 3 ++ 6 files changed, 36 insertions(+), 28 deletions(-)
This patch cleans up some fields in the rpc_task struct.
include/linux/sunrpc/sched.h | 4 ---- include/linux/sunrpc/xprt.h | 4 ++++ net/sunrpc/clnt.c | 19 ++++++++++--------- net/sunrpc/sched.c | 5 ----- net/sunrpc/xprt.c | 3 +++ 5 files changed, 17 insertions(+), 18 deletions(-)
The next feature flag to leave the rpc_xprt structure is the "nocong" flag.
fs/lockd/host.c | 1 include/linux/sunrpc/clnt.h | 1 include/linux/sunrpc/xprt.h | 12 +++++- net/sunrpc/sock.c | 50 +++++++++++++++++++++++++++-- net/sunrpc/xprt.c | 31 ++++++----------- 5 files changed, 70 insertions(+), 25 deletions(-)
This patch is still being tested, but is known not to work. It adds new transport switch methods to enable RPC client applications to access the remote peer address and port information cleanly via an API rather than simply copying it out of the rpc_xprt struct. This will help enable new features like IPv6.
fs/lockd/clntproc.c | 10 ++--- fs/lockd/host.c | 5 +- fs/lockd/svclock.c | 10 +++-- include/linux/nfs_fs.h | 1 include/linux/sunrpc/clnt.h | 3 - include/linux/sunrpc/xprt.h | 3 + net/sunrpc/clnt.c | 21 ++++++++-- net/sunrpc/pmap_clnt.c | 17 ++++---- net/sunrpc/rpc_pipe.c | 4 +- net/sunrpc/sock.c | 56 ++++++++++++++++++++++++++--- net/sunrpc/xprt.c | 2 - 11 files changed, 97 insertions(+), 35 deletions(-)
Last modified: Fri Apr 30 17:12:00 EDT 2004