nfsd4: return delegation immediately if lease fails
authorJ. Bruce Fields <bfields@redhat.com>
Fri, 21 Jun 2013 15:05:32 +0000 (11:05 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 1 Jul 2013 21:32:07 +0000 (17:32 -0400)
This case shouldn't happen--the administrator shouldn't really allow
other applications access to the export until clients have had the
chance to reclaim their state--but if it does then we should set the
"return this lease immediately" bit on the reply.  That still leaves
some small races, but it's the best the protocol allows us to do in the
case a lease is ripped out from under us....

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

index a7d8a11943eebdabf72c6b861ec25b6fc67f4961..d44a4bf71cefe298b9cb993c08b0afa0bfc2beaa 100644 (file)
@@ -3143,8 +3143,10 @@ out_free:
 out_no_deleg:
        open->op_delegate_type = NFS4_OPEN_DELEGATE_NONE;
        if (open->op_claim_type == NFS4_OPEN_CLAIM_PREVIOUS &&
-           open->op_delegate_type != NFS4_OPEN_DELEGATE_NONE)
+           open->op_delegate_type != NFS4_OPEN_DELEGATE_NONE) {
                dprintk("NFSD: WARNING: refusing delegation reclaim\n");
+               open->op_recall = 1;
+       }
 
        /* 4.1 client asking for a delegation? */
        if (open->op_deleg_want)