Lines Matching refs:cb

343 				    const struct nfsd4_callback *cb,  in encode_cb_sequence4args()  argument
346 struct nfsd4_session *session = cb->cb_clp->cl_cb_session; in encode_cb_sequence4args()
387 struct nfsd4_callback *cb) in decode_cb_sequence4resok() argument
389 struct nfsd4_session *session = cb->cb_clp->cl_cb_session; in decode_cb_sequence4resok()
425 cb->cb_seq_status = status; in decode_cb_sequence4resok()
433 struct nfsd4_callback *cb) in decode_cb_sequence4res() argument
437 if (cb->cb_clp->cl_minorversion == 0) in decode_cb_sequence4res()
440 status = decode_cb_op_status(xdr, OP_CB_SEQUENCE, &cb->cb_seq_status); in decode_cb_sequence4res()
441 if (unlikely(status || cb->cb_seq_status)) in decode_cb_sequence4res()
444 return decode_cb_sequence4resok(xdr, cb); in decode_cb_sequence4res()
471 const struct nfsd4_callback *cb = data; in nfs4_xdr_enc_cb_recall() local
472 const struct nfs4_delegation *dp = cb_to_delegation(cb); in nfs4_xdr_enc_cb_recall()
474 .ident = cb->cb_clp->cl_cb_ident, in nfs4_xdr_enc_cb_recall()
475 .minorversion = cb->cb_clp->cl_minorversion, in nfs4_xdr_enc_cb_recall()
479 encode_cb_sequence4args(xdr, cb, &hdr); in nfs4_xdr_enc_cb_recall()
507 struct nfsd4_callback *cb = data; in nfs4_xdr_dec_cb_recall() local
515 status = decode_cb_sequence4res(xdr, cb); in nfs4_xdr_dec_cb_recall()
516 if (unlikely(status || cb->cb_seq_status)) in nfs4_xdr_dec_cb_recall()
519 return decode_cb_op_status(xdr, OP_CB_RECALL, &cb->cb_status); in nfs4_xdr_dec_cb_recall()
579 const struct nfsd4_callback *cb = data; in nfs4_xdr_enc_cb_layout() local
581 container_of(cb, struct nfs4_layout_stateid, ls_recall); in nfs4_xdr_enc_cb_layout()
584 .minorversion = cb->cb_clp->cl_minorversion, in nfs4_xdr_enc_cb_layout()
588 encode_cb_sequence4args(xdr, cb, &hdr); in nfs4_xdr_enc_cb_layout()
597 struct nfsd4_callback *cb = data; in nfs4_xdr_dec_cb_layout() local
605 status = decode_cb_sequence4res(xdr, cb); in nfs4_xdr_dec_cb_layout()
606 if (unlikely(status || cb->cb_seq_status)) in nfs4_xdr_dec_cb_layout()
609 return decode_cb_op_status(xdr, OP_CB_LAYOUTRECALL, &cb->cb_status); in nfs4_xdr_dec_cb_layout()
626 const struct nfsd4_callback *cb = data; in nfs4_xdr_enc_cb_notify_lock() local
628 container_of(cb, struct nfsd4_blocked_lock, nbl_cb); in nfs4_xdr_enc_cb_notify_lock()
632 .minorversion = cb->cb_clp->cl_minorversion, in nfs4_xdr_enc_cb_notify_lock()
640 encode_cb_sequence4args(xdr, cb, &hdr); in nfs4_xdr_enc_cb_notify_lock()
655 struct nfsd4_callback *cb = data; in nfs4_xdr_dec_cb_notify_lock() local
663 status = decode_cb_sequence4res(xdr, cb); in nfs4_xdr_dec_cb_notify_lock()
664 if (unlikely(status || cb->cb_seq_status)) in nfs4_xdr_dec_cb_notify_lock()
667 return decode_cb_op_status(xdr, OP_CB_NOTIFY_LOCK, &cb->cb_status); in nfs4_xdr_dec_cb_notify_lock()
732 const struct nfsd4_callback *cb = data; in nfs4_xdr_enc_cb_offload() local
734 container_of(cb, struct nfsd4_copy, cp_cb); in nfs4_xdr_enc_cb_offload()
737 .minorversion = cb->cb_clp->cl_minorversion, in nfs4_xdr_enc_cb_offload()
741 encode_cb_sequence4args(xdr, cb, &hdr); in nfs4_xdr_enc_cb_offload()
750 struct nfsd4_callback *cb = data; in nfs4_xdr_dec_cb_offload() local
758 status = decode_cb_sequence4res(xdr, cb); in nfs4_xdr_dec_cb_offload()
759 if (unlikely(status || cb->cb_seq_status)) in nfs4_xdr_dec_cb_offload()
762 return decode_cb_op_status(xdr, OP_CB_OFFLOAD, &cb->cb_status); in nfs4_xdr_dec_cb_offload()
998 struct nfsd4_callback *cb = calldata; in nfsd4_cb_prepare() local
999 struct nfs4_client *clp = cb->cb_clp; in nfsd4_cb_prepare()
1006 cb->cb_seq_status = 1; in nfsd4_cb_prepare()
1007 cb->cb_status = 0; in nfsd4_cb_prepare()
1009 if (!cb->cb_holds_slot && !nfsd41_cb_get_slot(clp, task)) in nfsd4_cb_prepare()
1011 cb->cb_holds_slot = true; in nfsd4_cb_prepare()
1016 static bool nfsd4_cb_sequence_done(struct rpc_task *task, struct nfsd4_callback *cb) in nfsd4_cb_sequence_done() argument
1018 struct nfs4_client *clp = cb->cb_clp; in nfsd4_cb_sequence_done()
1038 if (!cb->cb_holds_slot) in nfsd4_cb_sequence_done()
1041 switch (cb->cb_seq_status) { in nfsd4_cb_sequence_done()
1057 nfsd4_mark_cb_fault(cb->cb_clp, cb->cb_seq_status); in nfsd4_cb_sequence_done()
1076 cb->cb_seq_status); in nfsd4_cb_sequence_done()
1079 cb->cb_holds_slot = false; in nfsd4_cb_sequence_done()
1095 cb->cb_need_restart = true; in nfsd4_cb_sequence_done()
1101 struct nfsd4_callback *cb = calldata; in nfsd4_cb_done() local
1102 struct nfs4_client *clp = cb->cb_clp; in nfsd4_cb_done()
1107 if (!nfsd4_cb_sequence_done(task, cb)) in nfsd4_cb_done()
1110 if (cb->cb_status) { in nfsd4_cb_done()
1112 task->tk_status = cb->cb_status; in nfsd4_cb_done()
1115 switch (cb->cb_ops->done(cb, task)) { in nfsd4_cb_done()
1134 struct nfsd4_callback *cb = calldata; in nfsd4_cb_release() local
1136 if (cb->cb_need_restart) in nfsd4_cb_release()
1137 nfsd4_run_cb(cb); in nfsd4_cb_release()
1139 cb->cb_ops->release(cb); in nfsd4_cb_release()
1190 static void nfsd4_process_cb_update(struct nfsd4_callback *cb) in nfsd4_process_cb_update() argument
1193 struct nfs4_client *clp = cb->cb_clp; in nfsd4_process_cb_update()
1221 memcpy(&conn, &cb->cb_clp->cl_cb_conn, sizeof(struct nfs4_cb_conn)); in nfsd4_process_cb_update()
1240 struct nfsd4_callback *cb = in nfsd4_run_cb_work() local
1242 struct nfs4_client *clp = cb->cb_clp; in nfsd4_run_cb_work()
1245 if (cb->cb_need_restart) { in nfsd4_run_cb_work()
1246 cb->cb_need_restart = false; in nfsd4_run_cb_work()
1248 if (cb->cb_ops && cb->cb_ops->prepare) in nfsd4_run_cb_work()
1249 cb->cb_ops->prepare(cb); in nfsd4_run_cb_work()
1253 nfsd4_process_cb_update(cb); in nfsd4_run_cb_work()
1258 if (cb->cb_ops && cb->cb_ops->release) in nfsd4_run_cb_work()
1259 cb->cb_ops->release(cb); in nfsd4_run_cb_work()
1266 if (!cb->cb_ops && clp->cl_minorversion) { in nfsd4_run_cb_work()
1271 cb->cb_msg.rpc_cred = clp->cl_cb_cred; in nfsd4_run_cb_work()
1272 rpc_call_async(clnt, &cb->cb_msg, RPC_TASK_SOFT | RPC_TASK_SOFTCONN, in nfsd4_run_cb_work()
1273 cb->cb_ops ? &nfsd4_cb_ops : &nfsd4_cb_probe_ops, cb); in nfsd4_run_cb_work()
1276 void nfsd4_init_cb(struct nfsd4_callback *cb, struct nfs4_client *clp, in nfsd4_init_cb() argument
1279 cb->cb_clp = clp; in nfsd4_init_cb()
1280 cb->cb_msg.rpc_proc = &nfs4_cb_procedures[op]; in nfsd4_init_cb()
1281 cb->cb_msg.rpc_argp = cb; in nfsd4_init_cb()
1282 cb->cb_msg.rpc_resp = cb; in nfsd4_init_cb()
1283 cb->cb_ops = ops; in nfsd4_init_cb()
1284 INIT_WORK(&cb->cb_work, nfsd4_run_cb_work); in nfsd4_init_cb()
1285 cb->cb_seq_status = 1; in nfsd4_init_cb()
1286 cb->cb_status = 0; in nfsd4_init_cb()
1287 cb->cb_need_restart = false; in nfsd4_init_cb()
1288 cb->cb_holds_slot = false; in nfsd4_init_cb()
1291 void nfsd4_run_cb(struct nfsd4_callback *cb) in nfsd4_run_cb() argument
1293 queue_work(callback_wq, &cb->cb_work); in nfsd4_run_cb()