2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-19 10:44:14 +08:00
linux-next/fs/nfs
Trond Myklebust 79f687a3de NFS: Fix a performance regression in readdir
Ben Coddington reports that commit 311324ad17, by adding the function
nfs_dir_mapping_need_revalidate() that checks page cache validity on
each call to nfs_readdir() causes a performance regression when
the directory is being modified.

If the directory is changing while we're iterating through the directory,
POSIX does not require us to invalidate the page cache unless the user
calls rewinddir(). However, we still do want to ensure that we use
readdirplus in order to avoid a load of stat() calls when the user
is doing an 'ls -l' workload.

The fix should be to invalidate the page cache immediately when we're
setting the NFS_INO_ADVISE_RDPLUS bit.

Reported-by: Benjamin Coddington <bcodding@redhat.com>
Fixes: 311324ad17 ("NFS: Be more aggressive in using readdirplus...")
Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
Tested-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
2016-12-02 11:42:50 -05:00
..
blocklayout
filelayout NFS: Remove unused authflavour parameter from nfs_get_client() 2016-12-01 17:46:32 -05:00
flexfilelayout NFS: Remove unused authflavour parameter from nfs_get_client() 2016-12-01 17:46:32 -05:00
objlayout pNFS: Get rid of unnecessary layout parameter in encode_layoutreturn callback 2016-12-01 17:21:44 -05:00
cache_lib.c
cache_lib.h
callback_proc.c pNFS: Delay getting the layout header in CB_LAYOUTRECALL handlers 2016-12-01 17:21:42 -05:00
callback_xdr.c
callback.c NFSv4.x: hide array-bounds warning 2016-11-22 16:11:44 -05:00
callback.h
client.c NFS: Remove unused authflavour parameter from nfs_get_client() 2016-12-01 17:46:32 -05:00
delegation.c NFSv4: Optimise away forced revalidation when we know the attributes are OK 2016-12-01 17:21:37 -05:00
delegation.h
dir.c NFS: Fix a performance regression in readdir 2016-12-02 11:42:50 -05:00
direct.c NFS: Remove unused argument from nfs_direct_write_complete() 2016-12-01 17:50:37 -05:00
dns_resolve.c
dns_resolve.h
file.c
fscache-index.c
fscache.c
fscache.h
getroot.c
inode.c NFS: discard nfs_lockowner structure. 2016-12-01 17:58:13 -05:00
internal.h NFS: Remove unused authflavour parameter from nfs_get_client() 2016-12-01 17:46:32 -05:00
io.c
iostat.h
Kconfig
Makefile
mount_clnt.c
namespace.c
netns.h
nfs2super.c
nfs2xdr.c
nfs3_fs.h
nfs3acl.c
nfs3client.c NFS: Remove unused authflavour parameter from nfs_get_client() 2016-12-01 17:46:32 -05:00
nfs3proc.c
nfs3super.c
nfs3xdr.c
nfs4_fs.h NFSv4: change nfs4_select_rw_stateid to take a lock_context inplace of lock_owner 2016-12-01 17:57:56 -05:00
nfs4client.c NFS: Remove unused authflavour parameter from nfs_get_client() 2016-12-01 17:46:32 -05:00
nfs4file.c NFSv4: add flock_owner to open context 2016-12-01 17:57:27 -05:00
nfs4getroot.c
nfs4idmap.c
nfs4idmap.h
nfs4namespace.c
nfs4proc.c NFSv4: change nfs4_select_rw_stateid to take a lock_context inplace of lock_owner 2016-12-01 17:57:56 -05:00
nfs4renewd.c
nfs4session.c NFSv4.1: Fix regression in callback retry handling 2016-12-01 17:21:38 -05:00
nfs4session.h
nfs4state.c NFS: discard nfs_lockowner structure. 2016-12-01 17:58:13 -05:00
nfs4super.c
nfs4sysctl.c
nfs4trace.c
nfs4trace.h
nfs4xdr.c NFSv4: Add encode/decode of the layoutreturn op in DELEGRETURN 2016-12-01 17:21:46 -05:00
nfs42.h
nfs42proc.c
nfs42xdr.c
nfs.h
nfsroot.c
nfstrace.c
nfstrace.h
pagelist.c NFS: discard nfs_lockowner structure. 2016-12-01 17:58:13 -05:00
pnfs_dev.c
pnfs_nfs.c NFS: Remove unused authflavour parameter from nfs_get_client() 2016-12-01 17:46:32 -05:00
pnfs.c pNFS: Skip invalid stateids when doing a bulk destroy 2016-12-01 17:21:51 -05:00
pnfs.h NFS: Remove unused authflavour parameter from nfs_get_client() 2016-12-01 17:46:32 -05:00
proc.c
read.c
super.c NFS: fix typo in parameter description 2016-12-01 18:00:11 -05:00
symlink.c
sysctl.c
unlink.c
write.c NFS: discard nfs_lockowner structure. 2016-12-01 17:58:13 -05:00