NFSD: Add a mechanism to wait for a DELEGRETURN
Subsequent patches will use this mechanism to wake up an operation
that is waiting for a client to return a delegation.
The new tracepoint records whether the wait timed out or was
properly awoken by the expected DELEGRETURN:
nfsd-1155 [002] 83799.493199: nfsd_delegret_wakeup: xid=0x14b7d6ef fh_hash=0xf6826792 (timed out)
Suggested-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
This commit is contained in:
@@ -164,6 +164,7 @@ char * nfs4_recoverydir(void);
|
||||
bool nfsd4_spo_must_allow(struct svc_rqst *rqstp);
|
||||
int nfsd4_create_laundry_wq(void);
|
||||
void nfsd4_destroy_laundry_wq(void);
|
||||
bool nfsd_wait_for_delegreturn(struct svc_rqst *rqstp, struct inode *inode);
|
||||
#else
|
||||
static inline int nfsd4_init_slabs(void) { return 0; }
|
||||
static inline void nfsd4_free_slabs(void) { }
|
||||
@@ -179,6 +180,11 @@ static inline bool nfsd4_spo_must_allow(struct svc_rqst *rqstp)
|
||||
}
|
||||
static inline int nfsd4_create_laundry_wq(void) { return 0; };
|
||||
static inline void nfsd4_destroy_laundry_wq(void) {};
|
||||
static inline bool nfsd_wait_for_delegreturn(struct svc_rqst *rqstp,
|
||||
struct inode *inode)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -343,6 +349,7 @@ void nfsd_lockd_shutdown(void);
|
||||
#define NFSD_COURTESY_CLIENT_TIMEOUT (24 * 60 * 60) /* seconds */
|
||||
#define NFSD_CLIENT_MAX_TRIM_PER_RUN 128
|
||||
#define NFS4_CLIENTS_PER_GB 1024
|
||||
#define NFSD_DELEGRETURN_TIMEOUT (HZ / 34) /* 30ms */
|
||||
|
||||
/*
|
||||
* The following attributes are currently not supported by the NFSv4 server:
|
||||
|
||||
Reference in New Issue
Block a user