Loading fs/nfsd/nfs4state.c +5 −21 Original line number Diff line number Diff line Loading @@ -2189,36 +2189,20 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, } } unconf = find_unconfirmed_client_by_str(dname, strhashval); status = nfserr_jukebox; if (!conf) { /* case 4: placed first, because it's the normal case */ if (unconf) expire_client(unconf); status = nfserr_jukebox; new = create_client(clname, dname, rqstp, &clverifier); if (new == NULL) goto out; if (!conf) { /* case 4: placed first, because it's the normal case */ gen_clid(new); } else if (same_verf(&conf->cl_verifier, &clverifier)) { /* case 1: probable callback update */ if (unconf) { /* Note this is removing unconfirmed {*x***}, * which is stronger than RFC recommended {vxc**}. * This has the advantage that there is at most * one {*x***} in either list at any time. */ expire_client(unconf); } new = create_client(clname, dname, rqstp, &clverifier); if (new == NULL) goto out; copy_clid(new, conf); } else { /* conf && !same_verf(): */ /* cases 2, 3: probable client reboot: */ if (unconf) expire_client(unconf); new = create_client(clname, dname, rqstp, &clverifier); if (new == NULL) goto out; gen_clid(new); } /* Loading Loading
fs/nfsd/nfs4state.c +5 −21 Original line number Diff line number Diff line Loading @@ -2189,36 +2189,20 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, } } unconf = find_unconfirmed_client_by_str(dname, strhashval); status = nfserr_jukebox; if (!conf) { /* case 4: placed first, because it's the normal case */ if (unconf) expire_client(unconf); status = nfserr_jukebox; new = create_client(clname, dname, rqstp, &clverifier); if (new == NULL) goto out; if (!conf) { /* case 4: placed first, because it's the normal case */ gen_clid(new); } else if (same_verf(&conf->cl_verifier, &clverifier)) { /* case 1: probable callback update */ if (unconf) { /* Note this is removing unconfirmed {*x***}, * which is stronger than RFC recommended {vxc**}. * This has the advantage that there is at most * one {*x***} in either list at any time. */ expire_client(unconf); } new = create_client(clname, dname, rqstp, &clverifier); if (new == NULL) goto out; copy_clid(new, conf); } else { /* conf && !same_verf(): */ /* cases 2, 3: probable client reboot: */ if (unconf) expire_client(unconf); new = create_client(clname, dname, rqstp, &clverifier); if (new == NULL) goto out; gen_clid(new); } /* Loading