diff options
Diffstat (limited to 'fs/nfs/nfs4session.c')
-rw-r--r-- | fs/nfs/nfs4session.c | 40 |
1 files changed, 2 insertions, 38 deletions
diff --git a/fs/nfs/nfs4session.c b/fs/nfs/nfs4session.c index c4e225e4a9af..36e21cb29d65 100644 --- a/fs/nfs/nfs4session.c +++ b/fs/nfs/nfs4session.c | |||
@@ -478,48 +478,12 @@ static int nfs41_check_session_ready(struct nfs_client *clp) | |||
478 | return 0; | 478 | return 0; |
479 | } | 479 | } |
480 | 480 | ||
481 | int nfs4_init_session(struct nfs_server *server) | 481 | int nfs4_init_session(struct nfs_client *clp) |
482 | { | 482 | { |
483 | struct nfs_client *clp = server->nfs_client; | ||
484 | struct nfs4_session *session; | ||
485 | unsigned int target_max_rqst_sz = NFS_MAX_FILE_IO_SIZE; | ||
486 | unsigned int target_max_resp_sz = NFS_MAX_FILE_IO_SIZE; | ||
487 | |||
488 | if (!nfs4_has_session(clp)) | 483 | if (!nfs4_has_session(clp)) |
489 | return 0; | 484 | return 0; |
490 | 485 | ||
491 | if (server->rsize != 0) | 486 | clear_bit(NFS4_SESSION_INITING, &clp->cl_session->session_state); |
492 | target_max_resp_sz = server->rsize; | ||
493 | target_max_resp_sz += nfs41_maxread_overhead; | ||
494 | |||
495 | if (server->wsize != 0) | ||
496 | target_max_rqst_sz = server->wsize; | ||
497 | target_max_rqst_sz += nfs41_maxwrite_overhead; | ||
498 | |||
499 | session = clp->cl_session; | ||
500 | spin_lock(&clp->cl_lock); | ||
501 | if (test_and_clear_bit(NFS4_SESSION_INITING, &session->session_state)) { | ||
502 | /* Initialise targets and channel attributes */ | ||
503 | session->fc_target_max_rqst_sz = target_max_rqst_sz; | ||
504 | session->fc_attrs.max_rqst_sz = target_max_rqst_sz; | ||
505 | session->fc_target_max_resp_sz = target_max_resp_sz; | ||
506 | session->fc_attrs.max_resp_sz = target_max_resp_sz; | ||
507 | } else { | ||
508 | /* Just adjust the targets */ | ||
509 | if (target_max_rqst_sz > session->fc_target_max_rqst_sz) { | ||
510 | session->fc_target_max_rqst_sz = target_max_rqst_sz; | ||
511 | set_bit(NFS4CLNT_SESSION_RESET, &clp->cl_state); | ||
512 | } | ||
513 | if (target_max_resp_sz > session->fc_target_max_resp_sz) { | ||
514 | session->fc_target_max_resp_sz = target_max_resp_sz; | ||
515 | set_bit(NFS4CLNT_SESSION_RESET, &clp->cl_state); | ||
516 | } | ||
517 | } | ||
518 | spin_unlock(&clp->cl_lock); | ||
519 | |||
520 | if (test_bit(NFS4CLNT_SESSION_RESET, &clp->cl_state)) | ||
521 | nfs4_schedule_lease_recovery(clp); | ||
522 | |||
523 | return nfs41_check_session_ready(clp); | 487 | return nfs41_check_session_ready(clp); |
524 | } | 488 | } |
525 | 489 | ||