kernel_optimize_test/fs/nfs
Jeff Layton a1d617d8f1 nfs: allow blocking locks to be awoken by lock callbacks
Add a waitqueue head to the client structure. Have clients set a wait
on that queue prior to requesting a lock from the server. If the lock
is blocked, then we can use that to wait for wakeups.

Note that we do need to do this "manually" since we need to set the
wait on the waitqueue prior to requesting the lock, but requesting a
lock can involve activities that can block.

However, only do that for NFSv4.1 locks, either by compiling out
all of the waitqueue handling when CONFIG_NFS_V4_1 is disabled, or
skipping all of it at runtime if we're dealing with v4.0, or v4.1
servers that don't send lock callbacks.

Note too that even when we expect to get a lock callback, RFC5661
section 20.11.4 is pretty clear that we still need to poll for them,
so we do still sleep on a timeout. We do however always poll at the
longest interval in that case.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
[Anna: nfs4_retry_setlk() "status" should default to -ERESTARTSYS]
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
2016-09-22 15:54:27 -04:00
..
blocklayout pnfs/blocklayout: update last_write_offset atomically with extents 2016-08-23 11:41:38 -04:00
filelayout pNFS/files: filelayout_write_done_cb must call nfs_writeback_update_inode() 2016-07-21 09:46:42 -04:00
flexfilelayout pNFS/flexfiles: Fix an Oopsable condition when connection to the DS fails 2016-08-29 15:21:16 -04:00
objlayout
cache_lib.c
cache_lib.h
callback_proc.c nfs: allow blocking locks to be awoken by lock callbacks 2016-09-22 15:54:27 -04:00
callback_xdr.c nfs: add handling for CB_NOTIFY_LOCK in client 2016-09-22 13:56:04 -04:00
callback.c NFSv4.x: Add kernel parameter to control the callback server 2016-09-19 13:08:36 -04:00
callback.h nfs: add handling for CB_NOTIFY_LOCK in client 2016-09-22 13:56:04 -04:00
client.c pnfs: add a new mechanism to select a layout driver according to an ordered list 2016-09-19 13:11:13 -04:00
delegation.c
delegation.h
dir.c NFS client updates for Linux 4.8 2016-07-30 16:33:25 -07:00
direct.c NFS client updates for Linux 4.8 2016-07-30 16:33:25 -07:00
dns_resolve.c
dns_resolve.h
file.c nfs: eliminate pointless and confusing do_vfs_lock wrappers 2016-09-22 13:56:04 -04:00
fscache-index.c
fscache.c
fscache.h
getroot.c
inode.c pNFS: Actively set attributes as invalid if LAYOUTCOMMIT is outstanding 2016-07-28 14:49:08 -04:00
internal.h nfs: cover ->migratepage with CONFIG_MIGRATION 2016-09-20 09:29:39 -04:00
io.c NFS: Do not serialise O_DIRECT reads and writes 2016-07-05 19:11:04 -04:00
iostat.h
Kconfig
Makefile NFS: Do not serialise O_DIRECT reads and writes 2016-07-05 19:11:04 -04:00
mount_clnt.c
namespace.c
netns.h
nfs.h
nfs2super.c
nfs2xdr.c
nfs3_fs.h
nfs3acl.c
nfs3client.c nfs4: flexfiles: respect noresvport when establishing connections to DSes 2016-07-19 16:23:25 -04:00
nfs3proc.c qstr: constify instances in nfs 2016-07-20 23:30:06 -04:00
nfs3super.c
nfs3xdr.c
nfs4_fs.h nfs: track whether server sets MAY_NOTIFY_LOCK flag 2016-09-22 13:56:04 -04:00
nfs4client.c nfs: allow blocking locks to be awoken by lock callbacks 2016-09-22 15:54:27 -04:00
nfs4file.c NFSv4: Revert "Truncating file opens should also sync O_DIRECT writes" 2016-07-14 12:42:40 -04:00
nfs4getroot.c
nfs4idmap.c
nfs4idmap.h
nfs4namespace.c qstr: constify instances in nfs 2016-07-20 23:30:06 -04:00
nfs4proc.c nfs: allow blocking locks to be awoken by lock callbacks 2016-09-22 15:54:27 -04:00
nfs4renewd.c NFSv4: Cap the transport reconnection timer at 1/2 lease period 2016-08-05 19:22:22 -04:00
nfs4session.c NFSv4.1: Delay callback processing when there are referring triples 2016-08-28 14:23:26 -04:00
nfs4session.h NFSv4.x: Add kernel parameter to control the callback server 2016-09-19 13:08:36 -04:00
nfs4state.c NFSv4: Cleanup the setting of the nfs4 lease period 2016-08-05 19:13:08 -04:00
nfs4super.c
nfs4sysctl.c
nfs4trace.c
nfs4trace.h tracing: Use __get_str() when manipulating strings 2016-07-15 15:52:20 -04:00
nfs4xdr.c pnfs: add a new mechanism to select a layout driver according to an ordered list 2016-09-19 13:11:13 -04:00
nfs42.h
nfs42proc.c pNFS: Handle NFS4ERR_OLD_STATEID correctly in LAYOUTSTAT calls 2016-08-19 16:27:31 -04:00
nfs42xdr.c NFSv4.2: Fix warning "variable ‘stateids’ set but not used" 2016-07-24 17:36:06 -04:00
nfsroot.c
nfstrace.c
nfstrace.h NFS client updates for Linux 4.8 2016-07-30 16:33:25 -07:00
pagelist.c
pnfs_dev.c
pnfs_nfs.c NFS pnfs data server multipath session trunking 2016-09-19 13:08:37 -04:00
pnfs.c pnfs: add a new mechanism to select a layout driver according to an ordered list 2016-09-19 13:11:13 -04:00
pnfs.h pnfs: add a new mechanism to select a layout driver according to an ordered list 2016-09-19 13:11:13 -04:00
proc.c qstr: constify instances in nfs 2016-07-20 23:30:06 -04:00
read.c NFS: Fix a double page unlock 2016-06-24 12:01:00 -04:00
super.c NFSv4.x: Add kernel parameter to control the callback server 2016-09-19 13:08:36 -04:00
symlink.c
sysctl.c
unlink.c qstr: constify instances in nfs 2016-07-20 23:30:06 -04:00
write.c NFS client updates for Linux 4.8 2016-07-30 16:33:25 -07:00