linux/fs/nfs
Trond Myklebust d69ee9b855 NFS: Adapt readdirplus to application usage patterns
While the use of READDIRPLUS is significantly more efficient than
READDIR followed by many LOOKUP calls, it is still less efficient
than just READDIR if the attributes are not required.

This patch tracks when lookups are attempted on the directory,
and uses that information to selectively disable READDIRPLUS
on that directory.
The first 'readdir' call is always served using READDIRPLUS.
Subsequent calls only use READDIRPLUS if there was a successful
lookup or revalidation on a child in the mean time.

Credit for the original idea should go to Neil Brown. See:
      http://www.spinics.net/lists/linux-nfs/msg19996.html
However, the implementation in this patch differs from Neil's
in that it focuses on tracking lookups rather than calls to
stat().

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Neil Brown <neilb@suse.de>
2012-05-01 19:16:43 -04:00
..
blocklayout NFS: create struct nfs_page_array 2012-04-27 14:10:37 -04:00
objlayout NFS: create common nfs_pgio_header for both read and write 2012-04-27 14:10:37 -04:00
Kconfig SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG 2012-03-20 13:08:26 -04:00
Makefile pnfsblock: add blocklayout Kconfig option, Makefile, and stubs 2011-07-31 12:18:15 -04:00
cache_lib.c NFS: remove RPC PipeFS mount point references from NFS cache routines 2012-01-31 18:20:26 -05:00
cache_lib.h NFS: DNS resolver PipeFS notifier introduced 2012-01-31 18:20:26 -05:00
callback.c NFS: Fix a number of sparse warnings 2012-03-11 15:14:16 -04:00
callback.h NFSv4.1: Convert slotid from u8 to u32 2012-02-15 00:19:43 -05:00
callback_proc.c NFSv4: Further clean-ups of delegation stateid validation 2012-03-06 10:32:44 -05:00
callback_xdr.c NFSv4: Rate limit the state manager warning messages 2012-03-12 18:15:22 -04:00
client.c NFSv2/v3: Simulate the change attribute 2012-05-01 15:42:43 -04:00
delegation.c NFS: Fix a number of sparse warnings 2012-03-11 15:14:16 -04:00
delegation.h NFSv4.0: Re-establish the callback channel on NFS4ERR_CB_PATHDOWN 2012-03-10 11:54:36 -05:00
dir.c NFS: Adapt readdirplus to application usage patterns 2012-05-01 19:16:43 -04:00
direct.c NFS: Simplify the nfs_read_completion functions 2012-05-01 15:42:22 -04:00
dns_resolve.c NFS: Fix a number of sparse warnings 2012-03-11 15:14:16 -04:00
dns_resolve.h NFS: DNS resolver cache per network namespace context introduced 2012-01-31 18:20:26 -05:00
file.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
fscache-index.c NFS: Use the inode->i_version to cache NFSv4 change attribute information 2011-10-18 09:14:34 -07:00
fscache.c NFS: Fix more NFS debug related build warnings 2012-03-21 09:31:44 -04:00
fscache.h NFS: Propagate 'fsc' mount option through automounts 2009-09-23 14:36:39 -04:00
getroot.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
idmap.c NFS client updates for Linux 3.4 2012-03-23 08:53:47 -07:00
inode.c NFS: Adapt readdirplus to application usage patterns 2012-05-01 19:16:43 -04:00
internal.h NFSv2/v3: Simulate the change attribute 2012-05-01 15:42:43 -04:00
iostat.h NFS: Squelch compiler warning in nfs_add_server_stats() 2010-05-14 15:09:31 -04:00
mount_clnt.c SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG 2012-03-20 13:08:26 -04:00
namespace.c NFS: Remove extra rpc_clnt argument to proc_lookup 2012-04-27 14:10:39 -04:00
netns.h NFS: replace global bl_wq with per-net one 2012-03-11 10:57:35 -04:00
nfs2xdr.c NFSv2/v3: Simulate the change attribute 2012-05-01 15:42:43 -04:00
nfs3acl.c NFS: Fix a number of sparse warnings 2012-03-11 15:14:16 -04:00
nfs3proc.c NFS: Remove extra rpc_clnt argument to proc_lookup 2012-04-27 14:10:39 -04:00
nfs3xdr.c NFSv2/v3: Simulate the change attribute 2012-05-01 15:42:43 -04:00
nfs4_fs.h NFS: Create a submount rpc_op 2012-04-27 14:10:39 -04:00
nfs4filelayout.c NFS: Prevent garbage cinfo->ds from leaking out 2012-04-27 14:10:39 -04:00
nfs4filelayout.h NFS: create struct nfs_commit_info 2012-04-27 14:10:38 -04:00
nfs4filelayoutdev.c NFSv4.1 fix page number calculation bug for filelayout decode buffers 2012-04-26 12:23:23 -04:00
nfs4namespace.c NFS: Create a submount rpc_op 2012-04-27 14:10:39 -04:00
nfs4proc.c NFSv4: COMMIT does not need post-op attributes 2012-05-01 15:42:45 -04:00
nfs4renewd.c NFSv4: The NFSv4.0 client must send RENEW calls if it holds a delegation 2011-08-24 15:07:37 -04:00
nfs4state.c NFSv4: Keep dropped state owners on the LRU list for a while 2012-04-21 13:01:00 -04:00
nfs4xdr.c NFSv4: COMMIT does not need post-op attributes 2012-05-01 15:42:45 -04:00
nfsroot.c SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG 2012-03-20 13:08:26 -04:00
pagelist.c NFS: rewrite directio read to use async coalesce code 2012-04-27 14:10:38 -04:00
pnfs.c NFS: Clean up nfs read and write error paths 2012-05-01 13:48:13 -04:00
pnfs.h NFS: pnfs_pageio_init_read() and init_write() need an extra argument 2012-04-30 14:06:46 -04:00
pnfs_dev.c NFS: Fix more NFS debug related build warnings 2012-03-21 09:31:44 -04:00
proc.c NFS: Remove extra rpc_clnt argument to proc_lookup 2012-04-27 14:10:39 -04:00
read.c NFS: Simplify the nfs_read_completion functions 2012-05-01 15:42:22 -04:00
super.c NFS: Honor the authflavor set in the clone mount data 2012-04-27 14:10:03 -04:00
symlink.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sysctl.c NFS: Fall back on old idmapper if request_key() fails 2012-02-06 18:48:01 -05:00
unlink.c NFS: Remove nfs4_setup_sequence from generic rename code 2012-03-21 09:31:46 -04:00
write.c NFS: Always trust the PageUptodate flag when we have a delegation 2012-05-01 15:42:41 -04:00