diff options
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 14 |
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 | ||
746 | static void init_forechannel_attrs(struct nfsd4_channel_attrs *new, struct nfsd4_channel_attrs *req, int numslots, int slotsize) | 746 | static 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 | ||
886 | static struct nfsd4_session *alloc_session(struct nfsd4_channel_attrs *fchan) | 889 | static 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; |