Experimental NFS client patches for Linux 2.4.25-pre8

Jan 29 22:58 01-msync.patch

Performing an msync() system call on files in NFS should result in dirty mmap'd pages being flushed to the NFS server, but on Linux this doesn't happen. This patch makes msync() work correctly for mmap'd NFS files.

 fs/nfs/file.c            |    4 ++--
 fs/nfs/inode.c           |    2 +-
 fs/nfs/pagelist.c        |    5 -----
 fs/nfs/read.c            |    2 +-
 fs/nfs/write.c           |   44 ++++++++++++++++++--------------------------
 include/linux/nfs_fs.h   |   20 +++++---------------
 include/linux/nfs_page.h |    2 +-
 7 files changed, 28 insertions(+), 51 deletions(-)
Jan 29 22:58 02-rename.patch

When a file is renamed, the server updates the file's ctime. This patch causes the client to invalidate a file's cached attributes when it is renamed so it will automatically pick up the new ctime the next time an application on the client accesses the file.

 dir.c |    1 +
 1 files changed, 1 insertion(+)
Jan 29 22:58 03-odirect-isem.patch

The VFS layer holds the inode semaphor when calling file systems to perform direct reads and writes, as it assumes the calls only schedule the I/O, but do not wait for it. The NFS client O_DIRECT support is entirely synchronous, so holding the inode semaphor effectively serializes all direct I/O against a file. This patch modifies the NFS direct I/O implementation to release the inode semaphor during direct read and write operations, allowing multiple concurrent direct I/O requests against NFS files.

 direct.c |    4 ++++
 1 files changed, 4 insertions(+)
Jan 29 22:58 04-call_encode.patch

The call_encode state in the RPC client's FSM clears the RPC buffer before it marshals the RPC header and call. This is quite wasteful. The XDR layer is already careful to pad variable length strings with zeroes. This patch removes the expensive memset() that zeroes the buffer, and cleans up code in the AUTH_UNIX credential marshalling routine to use the common string marshalling function.

 auth_unix.c |   12 ++++--------
 clnt.c      |    3 ---
 2 files changed, 4 insertions(+), 11 deletions(-)
Jan 29 22:58 05-rpc-slot-table.patch

This patch introduces two new tunable sysctl parameters that control how large each mount point's RPC slot table is. This allows a system administrator to increase or decrease the maximum allowable NFS I/O concurrency on each mount point.

 include/linux/sunrpc/debug.h |    2 ++
 include/linux/sunrpc/xprt.h  |   20 +++++++++++---------
 net/sunrpc/sunrpc_syms.c     |    2 ++
 net/sunrpc/sysctl.c          |   14 +++++++++++++-
 net/sunrpc/xprt.c            |   34 +++++++++++++++++++++++-----------
 5 files changed, 51 insertions(+), 21 deletions(-)

Jan 29 22:58 cel-nfs-all.patch

All of the above patches rolled into one.


Last modified: Thu Jan 29 23:10:02 EST 2004