Lines Matching refs:clp
749 static struct rpc_cred *get_backchannel_cred(struct nfs4_client *clp, struct rpc_clnt *client, stru… in get_backchannel_cred() argument
751 if (clp->cl_minorversion == 0) { in get_backchannel_cred()
752 char *principal = clp->cl_cred.cr_targ_princ ? in get_backchannel_cred()
753 clp->cl_cred.cr_targ_princ : "nfs"; in get_backchannel_cred()
770 static int setup_callback_client(struct nfs4_client *clp, struct nfs4_cb_conn *conn, struct nfsd4_s… in setup_callback_client() argument
772 int maxtime = max_cb_time(clp->net); in setup_callback_client()
779 .net = clp->net, in setup_callback_client()
791 if (clp->cl_minorversion == 0) { in setup_callback_client()
792 if (!clp->cl_cred.cr_principal && in setup_callback_client()
793 (clp->cl_cred.cr_flavor >= RPC_AUTH_GSS_KRB5)) in setup_callback_client()
795 args.client_name = clp->cl_cred.cr_principal; in setup_callback_client()
798 args.authflavor = clp->cl_cred.cr_flavor; in setup_callback_client()
799 clp->cl_cb_ident = conn->cb_ident; in setup_callback_client()
803 clp->cl_cb_conn.cb_xprt = conn->cb_xprt; in setup_callback_client()
804 clp->cl_cb_session = ses; in setup_callback_client()
806 args.prognumber = clp->cl_cb_session->se_cb_prog; in setup_callback_client()
818 cred = get_backchannel_cred(clp, client, ses); in setup_callback_client()
823 clp->cl_cb_client = client; in setup_callback_client()
824 clp->cl_cb_cred = cred; in setup_callback_client()
828 static void warn_no_callback_path(struct nfs4_client *clp, int reason) in warn_no_callback_path() argument
831 (int)clp->cl_name.len, clp->cl_name.data, reason); in warn_no_callback_path()
834 static void nfsd4_mark_cb_down(struct nfs4_client *clp, int reason) in nfsd4_mark_cb_down() argument
836 if (test_bit(NFSD4_CLIENT_CB_UPDATE, &clp->cl_flags)) in nfsd4_mark_cb_down()
838 clp->cl_cb_state = NFSD4_CB_DOWN; in nfsd4_mark_cb_down()
839 warn_no_callback_path(clp, reason); in nfsd4_mark_cb_down()
842 static void nfsd4_mark_cb_fault(struct nfs4_client *clp, int reason) in nfsd4_mark_cb_fault() argument
844 if (test_bit(NFSD4_CLIENT_CB_UPDATE, &clp->cl_flags)) in nfsd4_mark_cb_fault()
846 clp->cl_cb_state = NFSD4_CB_FAULT; in nfsd4_mark_cb_fault()
847 warn_no_callback_path(clp, reason); in nfsd4_mark_cb_fault()
852 struct nfs4_client *clp = container_of(calldata, struct nfs4_client, cl_cb_null); in nfsd4_cb_probe_done() local
855 nfsd4_mark_cb_down(clp, task->tk_status); in nfsd4_cb_probe_done()
857 clp->cl_cb_state = NFSD4_CB_UP; in nfsd4_cb_probe_done()
872 void nfsd4_probe_callback(struct nfs4_client *clp) in nfsd4_probe_callback() argument
874 clp->cl_cb_state = NFSD4_CB_UNKNOWN; in nfsd4_probe_callback()
875 set_bit(NFSD4_CLIENT_CB_UPDATE, &clp->cl_flags); in nfsd4_probe_callback()
876 nfsd4_run_cb(&clp->cl_cb_null); in nfsd4_probe_callback()
879 void nfsd4_probe_callback_sync(struct nfs4_client *clp) in nfsd4_probe_callback_sync() argument
881 nfsd4_probe_callback(clp); in nfsd4_probe_callback_sync()
885 void nfsd4_change_callback(struct nfs4_client *clp, struct nfs4_cb_conn *conn) in nfsd4_change_callback() argument
887 clp->cl_cb_state = NFSD4_CB_UNKNOWN; in nfsd4_change_callback()
888 spin_lock(&clp->cl_lock); in nfsd4_change_callback()
889 memcpy(&clp->cl_cb_conn, conn, sizeof(struct nfs4_cb_conn)); in nfsd4_change_callback()
890 spin_unlock(&clp->cl_lock); in nfsd4_change_callback()
898 static bool nfsd41_cb_get_slot(struct nfs4_client *clp, struct rpc_task *task) in nfsd41_cb_get_slot() argument
900 if (test_and_set_bit(0, &clp->cl_cb_slot_busy) != 0) { in nfsd41_cb_get_slot()
901 rpc_sleep_on(&clp->cl_cb_waitq, task, NULL); in nfsd41_cb_get_slot()
903 if (test_and_set_bit(0, &clp->cl_cb_slot_busy) != 0) { in nfsd41_cb_get_slot()
907 rpc_wake_up_queued_task(&clp->cl_cb_waitq, task); in nfsd41_cb_get_slot()
919 struct nfs4_client *clp = cb->cb_clp; in nfsd4_cb_prepare() local
920 u32 minorversion = clp->cl_minorversion; in nfsd4_cb_prepare()
929 if (!nfsd41_cb_get_slot(clp, task)) in nfsd4_cb_prepare()
937 struct nfs4_client *clp = cb->cb_clp; in nfsd4_cb_sequence_done() local
938 struct nfsd4_session *session = clp->cl_cb_session; in nfsd4_cb_sequence_done()
941 if (!clp->cl_minorversion) { in nfsd4_cb_sequence_done()
995 clear_bit(0, &clp->cl_cb_slot_busy); in nfsd4_cb_sequence_done()
996 rpc_wake_up_next(&clp->cl_cb_waitq); in nfsd4_cb_sequence_done()
998 clp->cl_cb_session->se_cb_seq_nr); in nfsd4_cb_sequence_done()
1017 struct nfs4_client *clp = cb->cb_clp; in nfsd4_cb_done() local
1020 clp->cl_minorversion); in nfsd4_cb_done()
1039 nfsd4_mark_cb_down(clp, task->tk_status); in nfsd4_cb_done()
1077 void nfsd4_shutdown_callback(struct nfs4_client *clp) in nfsd4_shutdown_callback() argument
1079 set_bit(NFSD4_CLIENT_CB_KILL, &clp->cl_flags); in nfsd4_shutdown_callback()
1085 nfsd4_run_cb(&clp->cl_cb_null); in nfsd4_shutdown_callback()
1090 static struct nfsd4_conn * __nfsd4_find_backchannel(struct nfs4_client *clp) in __nfsd4_find_backchannel() argument
1095 list_for_each_entry(s, &clp->cl_sessions, se_perclnt) { in __nfsd4_find_backchannel()
1107 struct nfs4_client *clp = cb->cb_clp; in nfsd4_process_cb_update() local
1116 if (clp->cl_cb_client) { in nfsd4_process_cb_update()
1117 rpc_shutdown_client(clp->cl_cb_client); in nfsd4_process_cb_update()
1118 clp->cl_cb_client = NULL; in nfsd4_process_cb_update()
1119 put_rpccred(clp->cl_cb_cred); in nfsd4_process_cb_update()
1120 clp->cl_cb_cred = NULL; in nfsd4_process_cb_update()
1122 if (clp->cl_cb_conn.cb_xprt) { in nfsd4_process_cb_update()
1123 svc_xprt_put(clp->cl_cb_conn.cb_xprt); in nfsd4_process_cb_update()
1124 clp->cl_cb_conn.cb_xprt = NULL; in nfsd4_process_cb_update()
1126 if (test_bit(NFSD4_CLIENT_CB_KILL, &clp->cl_flags)) in nfsd4_process_cb_update()
1128 spin_lock(&clp->cl_lock); in nfsd4_process_cb_update()
1133 BUG_ON(!(clp->cl_flags & NFSD4_CLIENT_CB_FLAG_MASK)); in nfsd4_process_cb_update()
1134 clear_bit(NFSD4_CLIENT_CB_UPDATE, &clp->cl_flags); in nfsd4_process_cb_update()
1136 c = __nfsd4_find_backchannel(clp); in nfsd4_process_cb_update()
1142 spin_unlock(&clp->cl_lock); in nfsd4_process_cb_update()
1144 err = setup_callback_client(clp, &conn, ses); in nfsd4_process_cb_update()
1146 nfsd4_mark_cb_down(clp, err); in nfsd4_process_cb_update()
1156 struct nfs4_client *clp = cb->cb_clp; in nfsd4_run_cb_work() local
1166 if (clp->cl_flags & NFSD4_CLIENT_CB_FLAG_MASK) in nfsd4_run_cb_work()
1169 clnt = clp->cl_cb_client; in nfsd4_run_cb_work()
1180 if (!cb->cb_ops && clp->cl_minorversion) { in nfsd4_run_cb_work()
1181 clp->cl_cb_state = NFSD4_CB_UP; in nfsd4_run_cb_work()
1185 cb->cb_msg.rpc_cred = clp->cl_cb_cred; in nfsd4_run_cb_work()
1190 void nfsd4_init_cb(struct nfsd4_callback *cb, struct nfs4_client *clp, in nfsd4_init_cb() argument
1193 cb->cb_clp = clp; in nfsd4_init_cb()