aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4state.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r--fs/nfsd/nfs4state.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 16e954c1c91..3d27f08e229 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -743,9 +743,12 @@ out_free:
743 return NULL; 743 return NULL;
744} 744}
745 745
746static void init_forechannel_attrs(struct nfsd4_channel_attrs *new, struct nfsd4_channel_attrs *req, int numslots, int slotsize) 746static void init_forechannel_attrs(struct nfsd4_channel_attrs *new,
747 struct nfsd4_channel_attrs *req,
748 int numslots, int slotsize,
749 struct nfsd_net *nn)
747{ 750{
748 u32 maxrpc = nfsd_serv->sv_max_mesg; 751 u32 maxrpc = nn->nfsd_serv->sv_max_mesg;
749 752
750 new->maxreqs = numslots; 753 new->maxreqs = numslots;
751 new->maxresp_cached = min_t(u32, req->maxresp_cached, 754 new->maxresp_cached = min_t(u32, req->maxresp_cached,
@@ -883,7 +886,8 @@ void nfsd4_put_session(struct nfsd4_session *ses)
883 spin_unlock(&nn->client_lock); 886 spin_unlock(&nn->client_lock);
884} 887}
885 888
886static struct nfsd4_session *alloc_session(struct nfsd4_channel_attrs *fchan) 889static struct nfsd4_session *alloc_session(struct nfsd4_channel_attrs *fchan,
890 struct nfsd_net *nn)
887{ 891{
888 struct nfsd4_session *new; 892 struct nfsd4_session *new;
889 int numslots, slotsize; 893 int numslots, slotsize;
@@ -904,7 +908,7 @@ static struct nfsd4_session *alloc_session(struct nfsd4_channel_attrs *fchan)
904 nfsd4_put_drc_mem(slotsize, fchan->maxreqs); 908 nfsd4_put_drc_mem(slotsize, fchan->maxreqs);
905 return NULL; 909 return NULL;
906 } 910 }
907 init_forechannel_attrs(&new->se_fchannel, fchan, numslots, slotsize); 911 init_forechannel_attrs(&new->se_fchannel, fchan, numslots, slotsize, nn);
908 return new; 912 return new;
909} 913}
910 914
@@ -1776,7 +1780,7 @@ nfsd4_create_session(struct svc_rqst *rqstp,
1776 return nfserr_inval; 1780 return nfserr_inval;
1777 if (check_forechannel_attrs(cr_ses->fore_channel)) 1781 if (check_forechannel_attrs(cr_ses->fore_channel))
1778 return nfserr_toosmall; 1782 return nfserr_toosmall;
1779 new = alloc_session(&cr_ses->fore_channel); 1783 new = alloc_session(&cr_ses->fore_channel, nn);
1780 if (!new) 1784 if (!new)
1781 return nfserr_jukebox; 1785 return nfserr_jukebox;
1782 status = nfserr_jukebox; 1786 status = nfserr_jukebox;