Loading fs/nfs/nfs4proc.c +17 −13 Original line number Diff line number Diff line Loading @@ -5807,8 +5807,8 @@ void nfs4_destroy_session(struct nfs4_session *session) static void nfs4_init_channel_attrs(struct nfs41_create_session_args *args) { struct nfs4_session *session = args->client->cl_session; unsigned int mxrqst_sz = session->fc_attrs.max_rqst_sz, mxresp_sz = session->fc_attrs.max_resp_sz; unsigned int mxrqst_sz = session->fc_target_max_rqst_sz, mxresp_sz = session->fc_target_max_resp_sz; if (mxrqst_sz == 0) mxrqst_sz = NFS_MAX_FILE_IO_SIZE; Loading Loading @@ -6015,24 +6015,28 @@ int nfs4_init_session(struct nfs_server *server) { struct nfs_client *clp = server->nfs_client; struct nfs4_session *session; unsigned int rsize, wsize; unsigned int target_max_rqst_sz = NFS_MAX_FILE_IO_SIZE; unsigned int target_max_resp_sz = NFS_MAX_FILE_IO_SIZE; if (!nfs4_has_session(clp)) return 0; if (server->rsize != 0) target_max_resp_sz = server->rsize; target_max_resp_sz += nfs41_maxread_overhead; if (server->wsize != 0) target_max_rqst_sz = server->wsize; target_max_rqst_sz += nfs41_maxwrite_overhead; session = clp->cl_session; spin_lock(&clp->cl_lock); if (test_and_clear_bit(NFS4_SESSION_INITING, &session->session_state)) { rsize = server->rsize; if (rsize == 0) rsize = NFS_MAX_FILE_IO_SIZE; wsize = server->wsize; if (wsize == 0) wsize = NFS_MAX_FILE_IO_SIZE; session->fc_attrs.max_rqst_sz = wsize + nfs41_maxwrite_overhead; session->fc_attrs.max_resp_sz = rsize + nfs41_maxread_overhead; /* Initialise targets and channel attributes */ session->fc_target_max_rqst_sz = target_max_rqst_sz; session->fc_attrs.max_rqst_sz = target_max_rqst_sz; session->fc_target_max_resp_sz = target_max_resp_sz; session->fc_attrs.max_resp_sz = target_max_resp_sz; } spin_unlock(&clp->cl_lock); Loading include/linux/nfs_fs_sb.h +3 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,9 @@ struct nfs4_session { struct nfs4_channel_attrs bc_attrs; struct nfs4_slot_table bc_slot_table; struct nfs_client *clp; /* Create session arguments */ unsigned int fc_target_max_rqst_sz; unsigned int fc_target_max_resp_sz; }; #endif /* CONFIG_NFS_V4 */ Loading Loading
fs/nfs/nfs4proc.c +17 −13 Original line number Diff line number Diff line Loading @@ -5807,8 +5807,8 @@ void nfs4_destroy_session(struct nfs4_session *session) static void nfs4_init_channel_attrs(struct nfs41_create_session_args *args) { struct nfs4_session *session = args->client->cl_session; unsigned int mxrqst_sz = session->fc_attrs.max_rqst_sz, mxresp_sz = session->fc_attrs.max_resp_sz; unsigned int mxrqst_sz = session->fc_target_max_rqst_sz, mxresp_sz = session->fc_target_max_resp_sz; if (mxrqst_sz == 0) mxrqst_sz = NFS_MAX_FILE_IO_SIZE; Loading Loading @@ -6015,24 +6015,28 @@ int nfs4_init_session(struct nfs_server *server) { struct nfs_client *clp = server->nfs_client; struct nfs4_session *session; unsigned int rsize, wsize; unsigned int target_max_rqst_sz = NFS_MAX_FILE_IO_SIZE; unsigned int target_max_resp_sz = NFS_MAX_FILE_IO_SIZE; if (!nfs4_has_session(clp)) return 0; if (server->rsize != 0) target_max_resp_sz = server->rsize; target_max_resp_sz += nfs41_maxread_overhead; if (server->wsize != 0) target_max_rqst_sz = server->wsize; target_max_rqst_sz += nfs41_maxwrite_overhead; session = clp->cl_session; spin_lock(&clp->cl_lock); if (test_and_clear_bit(NFS4_SESSION_INITING, &session->session_state)) { rsize = server->rsize; if (rsize == 0) rsize = NFS_MAX_FILE_IO_SIZE; wsize = server->wsize; if (wsize == 0) wsize = NFS_MAX_FILE_IO_SIZE; session->fc_attrs.max_rqst_sz = wsize + nfs41_maxwrite_overhead; session->fc_attrs.max_resp_sz = rsize + nfs41_maxread_overhead; /* Initialise targets and channel attributes */ session->fc_target_max_rqst_sz = target_max_rqst_sz; session->fc_attrs.max_rqst_sz = target_max_rqst_sz; session->fc_target_max_resp_sz = target_max_resp_sz; session->fc_attrs.max_resp_sz = target_max_resp_sz; } spin_unlock(&clp->cl_lock); Loading
include/linux/nfs_fs_sb.h +3 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,9 @@ struct nfs4_session { struct nfs4_channel_attrs bc_attrs; struct nfs4_slot_table bc_slot_table; struct nfs_client *clp; /* Create session arguments */ unsigned int fc_target_max_rqst_sz; unsigned int fc_target_max_resp_sz; }; #endif /* CONFIG_NFS_V4 */ Loading