Hi Jeff, On 09/06/2016 11:12 AM, Jeff Layton wrote: > If it does, then always have the client sleep for the max time before > repolling for the lock. > > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> > --- > fs/nfs/nfs4_fs.h | 1 + > fs/nfs/nfs4proc.c | 7 ++++++- > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h > index 9bf64eacba5b..91e4f135a5f2 100644 > --- a/fs/nfs/nfs4_fs.h > +++ b/fs/nfs/nfs4_fs.h > @@ -156,6 +156,7 @@ enum { > NFS_STATE_RECLAIM_NOGRACE, /* OPEN stateid needs to recover state */ > NFS_STATE_POSIX_LOCKS, /* Posix locks are supported */ > NFS_STATE_RECOVERY_FAILED, /* OPEN stateid state recovery failed */ > + NFS_STATE_MAY_NOTIFY_LOCK, /* server may CB_NOTIFY_LOCK */ > }; > > struct nfs4_state { > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > index 6829b998776d..ecd00431fe0c 100644 > --- a/fs/nfs/nfs4proc.c > +++ b/fs/nfs/nfs4proc.c > @@ -2537,6 +2537,8 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, > goto out; > if (server->caps & NFS_CAP_POSIX_LOCK) > set_bit(NFS_STATE_POSIX_LOCKS, &state->flags); > + if (opendata->o_res.rflags & NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Where does the NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK flag come from? `git grep` isn't finding it in my source directory. Thanks, Anna > + set_bit(NFS_STATE_MAY_NOTIFY_LOCK, &state->flags); > > dentry = opendata->dentry; > if (d_really_is_negative(dentry)) { > @@ -6230,7 +6232,7 @@ nfs4_proc_lock(struct file *filp, int cmd, struct file_lock *request) > { > struct nfs_open_context *ctx; > struct nfs4_state *state; > - unsigned long timeout = NFS4_LOCK_MINTIMEOUT; > + unsigned long timeout; > int status; > > /* verify open state */ > @@ -6279,6 +6281,9 @@ nfs4_proc_lock(struct file *filp, int cmd, struct file_lock *request) > if (status != 0) > return status; > > + timeout = test_bit(NFS_STATE_MAY_NOTIFY_LOCK, &state->flags) ? > + NFS4_LOCK_MAXTIMEOUT : NFS4_LOCK_MINTIMEOUT; > + > do { > struct nfs4_lock_state *lsp = request->fl_u.nfs4_fl.owner; > struct inode *inode = lsp->ls_state->inode; > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html