Lines Matching refs:clp
27 static int nfs_get_cb_ident_idr(struct nfs_client *clp, int minorversion) in nfs_get_cb_ident_idr() argument
30 struct nfs_net *nn = net_generic(clp->cl_net, nfs_net_id); in nfs_get_cb_ident_idr()
32 if (clp->rpc_ops->version != 4 || minorversion != 0) in nfs_get_cb_ident_idr()
36 ret = idr_alloc(&nn->cb_ident_idr, clp, 1, 0, GFP_NOWAIT); in nfs_get_cb_ident_idr()
38 clp->cl_cb_ident = ret; in nfs_get_cb_ident_idr()
145 nfs4_shutdown_ds_clients(struct nfs_client *clp) in nfs4_shutdown_ds_clients() argument
150 while (!list_empty(&clp->cl_ds_clients)) { in nfs4_shutdown_ds_clients()
151 dss = list_entry(clp->cl_ds_clients.next, in nfs4_shutdown_ds_clients()
159 void nfs41_shutdown_client(struct nfs_client *clp) in nfs41_shutdown_client() argument
161 if (nfs4_has_session(clp)) { in nfs41_shutdown_client()
162 nfs4_shutdown_ds_clients(clp); in nfs41_shutdown_client()
163 nfs4_destroy_session(clp->cl_session); in nfs41_shutdown_client()
164 nfs4_destroy_clientid(clp); in nfs41_shutdown_client()
170 void nfs40_shutdown_client(struct nfs_client *clp) in nfs40_shutdown_client() argument
172 if (clp->cl_slot_tbl) { in nfs40_shutdown_client()
173 nfs4_shutdown_slot_table(clp->cl_slot_tbl); in nfs40_shutdown_client()
174 kfree(clp->cl_slot_tbl); in nfs40_shutdown_client()
181 struct nfs_client *clp = nfs_alloc_client(cl_init); in nfs4_alloc_client() local
182 if (IS_ERR(clp)) in nfs4_alloc_client()
183 return clp; in nfs4_alloc_client()
185 err = nfs_get_cb_ident_idr(clp, cl_init->minorversion); in nfs4_alloc_client()
194 spin_lock_init(&clp->cl_lock); in nfs4_alloc_client()
195 INIT_DELAYED_WORK(&clp->cl_renewd, nfs4_renew_state); in nfs4_alloc_client()
196 INIT_LIST_HEAD(&clp->cl_ds_clients); in nfs4_alloc_client()
197 rpc_init_wait_queue(&clp->cl_rpcwaitq, "NFS client"); in nfs4_alloc_client()
198 clp->cl_state = 1 << NFS4CLNT_LEASE_EXPIRED; in nfs4_alloc_client()
199 clp->cl_minorversion = cl_init->minorversion; in nfs4_alloc_client()
200 clp->cl_mvops = nfs_v4_minor_ops[cl_init->minorversion]; in nfs4_alloc_client()
201 clp->cl_mig_gen = 1; in nfs4_alloc_client()
202 return clp; in nfs4_alloc_client()
205 nfs_free_client(clp); in nfs4_alloc_client()
212 static void nfs4_destroy_callback(struct nfs_client *clp) in nfs4_destroy_callback() argument
214 if (__test_and_clear_bit(NFS_CS_CALLBACK, &clp->cl_res_state)) in nfs4_destroy_callback()
215 nfs_callback_down(clp->cl_mvops->minor_version, clp->cl_net); in nfs4_destroy_callback()
218 static void nfs4_shutdown_client(struct nfs_client *clp) in nfs4_shutdown_client() argument
220 if (__test_and_clear_bit(NFS_CS_RENEWD, &clp->cl_res_state)) in nfs4_shutdown_client()
221 nfs4_kill_renewd(clp); in nfs4_shutdown_client()
222 clp->cl_mvops->shutdown_client(clp); in nfs4_shutdown_client()
223 nfs4_destroy_callback(clp); in nfs4_shutdown_client()
224 if (__test_and_clear_bit(NFS_CS_IDMAP, &clp->cl_res_state)) in nfs4_shutdown_client()
225 nfs_idmap_delete(clp); in nfs4_shutdown_client()
227 rpc_destroy_wait_queue(&clp->cl_rpcwaitq); in nfs4_shutdown_client()
228 kfree(clp->cl_serverowner); in nfs4_shutdown_client()
229 kfree(clp->cl_serverscope); in nfs4_shutdown_client()
230 kfree(clp->cl_implid); in nfs4_shutdown_client()
231 kfree(clp->cl_owner_id); in nfs4_shutdown_client()
234 void nfs4_free_client(struct nfs_client *clp) in nfs4_free_client() argument
236 nfs4_shutdown_client(clp); in nfs4_free_client()
237 nfs_free_client(clp); in nfs4_free_client()
243 static int nfs4_init_callback(struct nfs_client *clp) in nfs4_init_callback() argument
248 xprt = rcu_dereference_raw(clp->cl_rpcclient->cl_xprt); in nfs4_init_callback()
250 if (nfs4_has_session(clp)) { in nfs4_init_callback()
256 error = nfs_callback_up(clp->cl_mvops->minor_version, xprt); in nfs4_init_callback()
262 __set_bit(NFS_CS_CALLBACK, &clp->cl_res_state); in nfs4_init_callback()
273 int nfs40_init_client(struct nfs_client *clp) in nfs40_init_client() argument
289 clp->cl_slot_tbl = tbl; in nfs40_init_client()
301 int nfs41_init_client(struct nfs_client *clp) in nfs41_init_client() argument
310 session = nfs4_alloc_session(clp); in nfs41_init_client()
314 clp->cl_session = session; in nfs41_init_client()
322 nfs_mark_client_ready(clp, NFS_CS_SESSION_INITING); in nfs41_init_client()
331 static int nfs4_init_client_minor_version(struct nfs_client *clp) in nfs4_init_client_minor_version() argument
335 ret = clp->cl_mvops->init_client(clp); in nfs4_init_client_minor_version()
338 return nfs4_init_callback(clp); in nfs4_init_client_minor_version()
351 struct nfs_client *nfs4_init_client(struct nfs_client *clp, in nfs4_init_client() argument
359 if (clp->cl_cons_state == NFS_CS_READY) { in nfs4_init_client()
361 dprintk("<-- nfs4_init_client() = 0 [already %p]\n", clp); in nfs4_init_client()
362 return clp; in nfs4_init_client()
366 clp->rpc_ops = &nfs_v4_clientops; in nfs4_init_client()
368 if (clp->cl_minorversion != 0) in nfs4_init_client()
369 __set_bit(NFS_CS_INFINITE_SLOTS, &clp->cl_flags); in nfs4_init_client()
370 __set_bit(NFS_CS_DISCRTRY, &clp->cl_flags); in nfs4_init_client()
371 __set_bit(NFS_CS_NO_RETRANS_TIMEOUT, &clp->cl_flags); in nfs4_init_client()
373 error = nfs_create_rpc_client(clp, timeparms, RPC_AUTH_GSS_KRB5I); in nfs4_init_client()
375 error = nfs_create_rpc_client(clp, timeparms, RPC_AUTH_UNIX); in nfs4_init_client()
384 error = rpc_localaddr(clp->cl_rpcclient, sap, sizeof(cb_addr)); in nfs4_init_client()
392 strlcpy(clp->cl_ipaddr, ip_addr, sizeof(clp->cl_ipaddr)); in nfs4_init_client()
394 error = nfs_idmap_new(clp); in nfs4_init_client()
400 __set_bit(NFS_CS_IDMAP, &clp->cl_res_state); in nfs4_init_client()
402 error = nfs4_init_client_minor_version(clp); in nfs4_init_client()
406 if (!nfs4_has_session(clp)) in nfs4_init_client()
407 nfs_mark_client_ready(clp, NFS_CS_READY); in nfs4_init_client()
409 error = nfs4_discover_server_trunking(clp, &old); in nfs4_init_client()
413 if (clp != old) in nfs4_init_client()
414 clp->cl_preserve_clid = true; in nfs4_init_client()
415 nfs_put_client(clp); in nfs4_init_client()
419 nfs_mark_client_ready(clp, error); in nfs4_init_client()
420 nfs_put_client(clp); in nfs4_init_client()
702 struct nfs_client *clp; in nfs4_find_client_ident() local
706 clp = idr_find(&nn->cb_ident_idr, cb_ident); in nfs4_find_client_ident()
707 if (clp) in nfs4_find_client_ident()
708 atomic_inc(&clp->cl_count); in nfs4_find_client_ident()
710 return clp; in nfs4_find_client_ident()
716 struct nfs_client *clp, u32 minorversion) in nfs4_cb_match_client() argument
718 struct sockaddr *clap = (struct sockaddr *)&clp->cl_addr; in nfs4_cb_match_client()
721 if (!(clp->cl_cons_state == NFS_CS_READY || in nfs4_cb_match_client()
722 clp->cl_cons_state == NFS_CS_SESSION_INITING)) in nfs4_cb_match_client()
728 if (clp->rpc_ops->version != 4 || in nfs4_cb_match_client()
729 clp->cl_minorversion != minorversion) in nfs4_cb_match_client()
750 struct nfs_client *clp; in nfs4_find_client_sessionid() local
754 list_for_each_entry(clp, &nn->nfs_client_list, cl_share_link) { in nfs4_find_client_sessionid()
755 if (nfs4_cb_match_client(addr, clp, minorversion) == false) in nfs4_find_client_sessionid()
758 if (!nfs4_has_session(clp)) in nfs4_find_client_sessionid()
762 if (memcmp(clp->cl_session->sess_id.data, in nfs4_find_client_sessionid()
766 atomic_inc(&clp->cl_count); in nfs4_find_client_sessionid()
768 return clp; in nfs4_find_client_sessionid()
805 struct nfs_client *clp; in nfs4_set_client() local
816 clp = nfs_get_client(&cl_init, timeparms, ip_addr, authflavour); in nfs4_set_client()
817 if (IS_ERR(clp)) { in nfs4_set_client()
818 error = PTR_ERR(clp); in nfs4_set_client()
829 set_bit(NFS_CS_CHECK_LEASE_TIME, &clp->cl_res_state); in nfs4_set_client()
831 server->nfs_client = clp; in nfs4_set_client()
832 dprintk("<-- nfs4_set_client() = 0 [new %p]\n", clp); in nfs4_set_client()
863 struct nfs_client *clp; in nfs4_set_ds_client() local
876 clp = nfs_get_client(&cl_init, &ds_timeout, mds_clp->cl_ipaddr, in nfs4_set_ds_client()
879 dprintk("<-- %s %p\n", __func__, clp); in nfs4_set_ds_client()
880 return clp; in nfs4_set_ds_client()
1167 struct nfs_client *clp = server->nfs_client; in nfs4_update_server() local
1170 .ident = clp->cl_proto, in nfs4_update_server()
1209 clp->cl_rpcclient->cl_auth->au_flavor, in nfs4_update_server()
1210 clp->cl_proto, clnt->cl_timeout, in nfs4_update_server()
1211 clp->cl_minorversion, net); in nfs4_update_server()
1212 nfs_put_client(clp); in nfs4_update_server()