static bool
nfsd4_decode_compound(struct nfsd4_compoundargs *argp)
{
+ struct nfsd_thread_local_info *ntli = argp->rqstp->rq_private;
struct nfsd4_op *op;
bool cachethis = false;
int auth_slack= argp->rqstp->rq_auth_slack;
if (argp->minorversion)
cachethis = false;
svc_reserve_auth(argp->rqstp, max_reply + readbytes);
- argp->rqstp->rq_cachetype = cachethis ? RC_REPLBUFF : RC_NOCACHE;
+ ntli->ntli_cachetype = cachethis ? RC_REPLBUFF : RC_NOCACHE;
argp->splice_ok = nfsd_read_splice_ok(argp->rqstp);
if (readcount > 1 || max_reply > PAGE_SIZE - auth_slack)
unsigned int len, struct nfsd_cacherep **cacherep)
{
struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
+ struct nfsd_thread_local_info *ntli = rqstp->rq_private;
struct nfsd_cacherep *rp, *found;
__wsum csum;
struct nfsd_drc_bucket *b;
- int type = rqstp->rq_cachetype;
+ int type = ntli->ntli_cachetype;
LIST_HEAD(dispose);
int rtn = RC_DOIT;
struct nfsd_thread_local_info {
struct nfs4_client **ntli_lease_breaker;
+ int ntli_cachetype;
};
/*
*/
int nfsd_dispatch(struct svc_rqst *rqstp)
{
+ struct nfsd_thread_local_info *ntli = rqstp->rq_private;
const struct svc_procedure *proc = rqstp->rq_procinfo;
__be32 *statp = rqstp->rq_accept_statp;
struct nfsd_cacherep *rp;
* Give the xdr decoder a chance to change this if it wants
* (necessary in the NFSv4.0 compound case)
*/
- rqstp->rq_cachetype = proc->pc_cachetype;
+ ntli->ntli_cachetype = proc->pc_cachetype;
/*
* ->pc_decode advances the argument stream past the NFS
*/
smp_store_release(&rqstp->rq_status_counter, rqstp->rq_status_counter + 1);
- nfsd_cache_update(rqstp, rp, rqstp->rq_cachetype, nfs_reply);
+ nfsd_cache_update(rqstp, rp, ntli->ntli_cachetype, nfs_reply);
out_cached_reply:
return 1;
u32 rq_vers; /* program version */
u32 rq_proc; /* procedure number */
u32 rq_prot; /* IP protocol */
- int rq_cachetype; /* catering to nfsd */
unsigned long rq_flags; /* flags field */
ktime_t rq_qtime; /* enqueue time */