nfsd4: STALE_STATEID cleanup

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
J. Bruce Fields 2013-03-12 17:36:17 -04:00
parent 78389046f7
commit 0eb6f20aa5

View File

@ -3282,16 +3282,6 @@ static inline __be32 nfs4_check_fh(struct svc_fh *fhp, struct nfs4_ol_stateid *s
return nfs_ok; return nfs_ok;
} }
static int
STALE_STATEID(stateid_t *stateid, struct nfsd_net *nn)
{
if (stateid->si_opaque.so_clid.cl_boot == nn->boot_time)
return 0;
dprintk("NFSD: stale stateid " STATEID_FMT "!\n",
STATEID_VAL(stateid));
return 1;
}
static inline int static inline int
access_permit_read(struct nfs4_ol_stateid *stp) access_permit_read(struct nfs4_ol_stateid *stp)
{ {
@ -3422,19 +3412,20 @@ static __be32 nfsd4_lookup_stateid(stateid_t *stateid, unsigned char typemask,
struct nfsd_net *nn) struct nfsd_net *nn)
{ {
struct nfs4_client *cl; struct nfs4_client *cl;
__be32 status;
if (ZERO_STATEID(stateid) || ONE_STATEID(stateid)) if (ZERO_STATEID(stateid) || ONE_STATEID(stateid))
return nfserr_bad_stateid; return nfserr_bad_stateid;
if (STALE_STATEID(stateid, nn)) status = lookup_clientid(&stateid->si_opaque.so_clid, sessions,
nn, &cl);
if (status == nfserr_stale_clientid)
return nfserr_stale_stateid; return nfserr_stale_stateid;
cl = find_confirmed_client(&stateid->si_opaque.so_clid, sessions, nn); if (status)
if (!cl) return status;
return nfserr_expired;
*s = find_stateid_by_type(cl, stateid, typemask); *s = find_stateid_by_type(cl, stateid, typemask);
if (!*s) if (!*s)
return nfserr_bad_stateid; return nfserr_bad_stateid;
return nfs_ok; return nfs_ok;
} }
/* /*