]> git.baikalelectronics.ru Git - kernel.git/commit
lockd: Introduce nlmclnt_operations
authorBenjamin Coddington <bcodding@redhat.com>
Tue, 11 Apr 2017 16:50:11 +0000 (12:50 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Fri, 21 Apr 2017 14:45:01 +0000 (10:45 -0400)
commit4cdef978987929d7ee24277a9105830511e49f5f
treed0368ec8da45be194c4cde25d46e178ea9060715
parent48f58bf05147bdb18edc24ac828043d737348e61
lockd: Introduce nlmclnt_operations

NFS would enjoy the ability to modify the behavior of the NLM client's
unlock RPC task in order to delay the transmission of the unlock until IO
that was submitted under that lock has completed.  This ability can ensure
that the NLM client will always complete the transmission of an unlock even
if the waiting caller has been interrupted with fatal signal.

For this purpose, a pointer to a struct nlmclnt_operations can be assigned
in a nfs_module's nfs_rpc_ops that will install those nlmclnt_operations on
the nlm_host.  The struct nlmclnt_operations defines three callback
operations that will be used in a following patch:

nlmclnt_alloc_call - used to call back after a successful allocation of
a struct nlm_rqst in nlmclnt_proc().

nlmclnt_unlock_prepare - used to call back during NLM unlock's
rpc_call_prepare.  The NLM client defers calling rpc_call_start()
until this callback returns false.

nlmclnt_release_call - used to call back when the NLM client's struct
nlm_rqst is freed.

Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/lockd/clntlock.c
fs/lockd/clntproc.c
fs/nfs/client.c
fs/nfs/nfs3proc.c
fs/nfs/proc.c
include/linux/lockd/bind.h
include/linux/lockd/lockd.h
include/linux/nfs_xdr.h