On Wed, 2017-08-23 at 16:11 -0400, Benjamin Coddington wrote: > Ping on this one as well -- it was buried in a thread: > > Ben > > On 2 Aug 2017, at 7:27, Benjamin Coddington wrote: > > > If the wait for a LOCK operation is interrupted, and then the file > > is > > closed, the locks cleanup code will assume that no new locks will > > be > > added > > to the inode after it has completed. We already have a mechanism > > to > > detect > > if there was signal, so let's use that to avoid recreating the > > local > > lock > > once the RPC completes. > > > > Signed-off-by: Benjamin Coddington <bcodding@xxxxxxxxxx> > > Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx> > > --- > > fs/nfs/nfs4proc.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > > index dbfa18900e25..5256f429c268 100644 > > --- a/fs/nfs/nfs4proc.c > > +++ b/fs/nfs/nfs4proc.c > > @@ -6100,7 +6100,7 @@ static void nfs4_lock_done(struct rpc_task > > *task, void *calldata) > > case 0: > > renew_lease(NFS_SERVER(d_inode(data->ctx- > > >dentry)), > > data->timestamp); > > - if (data->arg.new_lock) { > > + if (data->arg.new_lock && !data->cancelled) { > > data->fl.fl_flags &= ~(FL_SLEEP | > > FL_ACCESS); > > if (locks_lock_inode_wait(lsp->ls_state- > > >inode, &data->fl) < 0) { > > rpc_restart_call_prepare(task); > > Why do we want to special case '0'? Surely we don't want to restart the RPC call for any of the error cases if data->cancelled is set. -- Trond Myklebust Linux NFS client maintainer, PrimaryData trond.myklebust@xxxxxxxxxxxxxxx ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥