Lines Matching refs:cb
352 const struct nfsd4_callback *cb, in encode_cb_sequence4args() argument
355 struct nfsd4_session *session = cb->cb_clp->cl_cb_session; in encode_cb_sequence4args()
396 struct nfsd4_callback *cb) in decode_cb_sequence4resok() argument
398 struct nfsd4_session *session = cb->cb_clp->cl_cb_session; in decode_cb_sequence4resok()
438 cb->cb_seq_status = status; in decode_cb_sequence4resok()
447 struct nfsd4_callback *cb) in decode_cb_sequence4res() argument
451 if (cb->cb_minorversion == 0) in decode_cb_sequence4res()
454 status = decode_cb_op_status(xdr, OP_CB_SEQUENCE, &cb->cb_seq_status); in decode_cb_sequence4res()
455 if (unlikely(status || cb->cb_seq_status)) in decode_cb_sequence4res()
458 return decode_cb_sequence4resok(xdr, cb); in decode_cb_sequence4res()
483 const struct nfsd4_callback *cb) in nfs4_xdr_enc_cb_recall() argument
485 const struct nfs4_delegation *dp = cb_to_delegation(cb); in nfs4_xdr_enc_cb_recall()
487 .ident = cb->cb_clp->cl_cb_ident, in nfs4_xdr_enc_cb_recall()
488 .minorversion = cb->cb_minorversion, in nfs4_xdr_enc_cb_recall()
492 encode_cb_sequence4args(xdr, cb, &hdr); in nfs4_xdr_enc_cb_recall()
518 struct nfsd4_callback *cb) in nfs4_xdr_dec_cb_recall() argument
527 if (cb != NULL) { in nfs4_xdr_dec_cb_recall()
528 status = decode_cb_sequence4res(xdr, cb); in nfs4_xdr_dec_cb_recall()
529 if (unlikely(status || cb->cb_seq_status)) in nfs4_xdr_dec_cb_recall()
533 return decode_cb_op_status(xdr, OP_CB_RECALL, &cb->cb_status); in nfs4_xdr_dec_cb_recall()
591 const struct nfsd4_callback *cb) in nfs4_xdr_enc_cb_layout() argument
594 container_of(cb, struct nfs4_layout_stateid, ls_recall); in nfs4_xdr_enc_cb_layout()
597 .minorversion = cb->cb_minorversion, in nfs4_xdr_enc_cb_layout()
601 encode_cb_sequence4args(xdr, cb, &hdr); in nfs4_xdr_enc_cb_layout()
608 struct nfsd4_callback *cb) in nfs4_xdr_dec_cb_layout() argument
617 if (cb) { in nfs4_xdr_dec_cb_layout()
618 status = decode_cb_sequence4res(xdr, cb); in nfs4_xdr_dec_cb_layout()
619 if (unlikely(status || cb->cb_seq_status)) in nfs4_xdr_dec_cb_layout()
622 return decode_cb_op_status(xdr, OP_CB_LAYOUTRECALL, &cb->cb_status); in nfs4_xdr_dec_cb_layout()
873 struct nfsd4_callback *cb = calldata; in nfsd4_cb_prepare() local
874 struct nfs4_client *clp = cb->cb_clp; in nfsd4_cb_prepare()
877 cb->cb_minorversion = minorversion; in nfsd4_cb_prepare()
882 cb->cb_seq_status = 1; in nfsd4_cb_prepare()
883 cb->cb_status = 0; in nfsd4_cb_prepare()
891 static bool nfsd4_cb_sequence_done(struct rpc_task *task, struct nfsd4_callback *cb) in nfsd4_cb_sequence_done() argument
893 struct nfs4_client *clp = cb->cb_clp; in nfsd4_cb_sequence_done()
913 switch (cb->cb_seq_status) { in nfsd4_cb_sequence_done()
928 nfsd4_mark_cb_fault(cb->cb_clp, cb->cb_seq_status); in nfsd4_cb_sequence_done()
947 cb->cb_seq_status); in nfsd4_cb_sequence_done()
965 cb->cb_need_restart = true; in nfsd4_cb_sequence_done()
971 struct nfsd4_callback *cb = calldata; in nfsd4_cb_done() local
972 struct nfs4_client *clp = cb->cb_clp; in nfsd4_cb_done()
977 if (!nfsd4_cb_sequence_done(task, cb)) in nfsd4_cb_done()
980 if (cb->cb_status) { in nfsd4_cb_done()
982 task->tk_status = cb->cb_status; in nfsd4_cb_done()
985 switch (cb->cb_ops->done(cb, task)) { in nfsd4_cb_done()
1003 struct nfsd4_callback *cb = calldata; in nfsd4_cb_release() local
1005 if (cb->cb_need_restart) in nfsd4_cb_release()
1006 nfsd4_run_cb(cb); in nfsd4_cb_release()
1008 cb->cb_ops->release(cb); in nfsd4_cb_release()
1059 static void nfsd4_process_cb_update(struct nfsd4_callback *cb) in nfsd4_process_cb_update() argument
1062 struct nfs4_client *clp = cb->cb_clp; in nfsd4_process_cb_update()
1090 memcpy(&conn, &cb->cb_clp->cl_cb_conn, sizeof(struct nfs4_cb_conn)); in nfsd4_process_cb_update()
1109 struct nfsd4_callback *cb = in nfsd4_run_cb_work() local
1111 struct nfs4_client *clp = cb->cb_clp; in nfsd4_run_cb_work()
1114 if (cb->cb_need_restart) { in nfsd4_run_cb_work()
1115 cb->cb_need_restart = false; in nfsd4_run_cb_work()
1117 if (cb->cb_ops && cb->cb_ops->prepare) in nfsd4_run_cb_work()
1118 cb->cb_ops->prepare(cb); in nfsd4_run_cb_work()
1122 nfsd4_process_cb_update(cb); in nfsd4_run_cb_work()
1127 if (cb->cb_ops && cb->cb_ops->release) in nfsd4_run_cb_work()
1128 cb->cb_ops->release(cb); in nfsd4_run_cb_work()
1135 if (!cb->cb_ops && clp->cl_minorversion) { in nfsd4_run_cb_work()
1140 cb->cb_msg.rpc_cred = clp->cl_cb_cred; in nfsd4_run_cb_work()
1141 rpc_call_async(clnt, &cb->cb_msg, RPC_TASK_SOFT | RPC_TASK_SOFTCONN, in nfsd4_run_cb_work()
1142 cb->cb_ops ? &nfsd4_cb_ops : &nfsd4_cb_probe_ops, cb); in nfsd4_run_cb_work()
1145 void nfsd4_init_cb(struct nfsd4_callback *cb, struct nfs4_client *clp, in nfsd4_init_cb() argument
1148 cb->cb_clp = clp; in nfsd4_init_cb()
1149 cb->cb_msg.rpc_proc = &nfs4_cb_procedures[op]; in nfsd4_init_cb()
1150 cb->cb_msg.rpc_argp = cb; in nfsd4_init_cb()
1151 cb->cb_msg.rpc_resp = cb; in nfsd4_init_cb()
1152 cb->cb_ops = ops; in nfsd4_init_cb()
1153 INIT_WORK(&cb->cb_work, nfsd4_run_cb_work); in nfsd4_init_cb()
1154 cb->cb_seq_status = 1; in nfsd4_init_cb()
1155 cb->cb_status = 0; in nfsd4_init_cb()
1156 cb->cb_need_restart = false; in nfsd4_init_cb()
1159 void nfsd4_run_cb(struct nfsd4_callback *cb) in nfsd4_run_cb() argument
1161 queue_work(callback_wq, &cb->cb_work); in nfsd4_run_cb()