nfsd: set the MAY_NOTIFY_LOCK flag in OPEN replies
authorJeff Layton <jlayton@redhat.com>
Fri, 16 Sep 2016 20:28:27 +0000 (16:28 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 26 Sep 2016 19:20:37 +0000 (15:20 -0400)
If we are using v4.1+, then we can send notification when contended
locks become free. Inform the client of that fact.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c

index 6c74d9a45163e1e94bfbda6d577c1f6a57709958..4062f4fbfc6dee0dc38cf80427c9bd3f63b72758 100644 (file)
@@ -4490,9 +4490,11 @@ out:
        * To finish the open response, we just need to set the rflags.
        */
        open->op_rflags = NFS4_OPEN_RESULT_LOCKTYPE_POSIX;
-       if (!(open->op_openowner->oo_flags & NFS4_OO_CONFIRMED) &&
-           !nfsd4_has_session(&resp->cstate))
+       if (nfsd4_has_session(&resp->cstate))
+               open->op_rflags |= NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK;
+       else if (!(open->op_openowner->oo_flags & NFS4_OO_CONFIRMED))
                open->op_rflags |= NFS4_OPEN_RESULT_CONFIRM;
+
        if (dp)
                nfs4_put_stid(&dp->dl_stid);
        if (stp)