Lines Matching refs:cb

352 				    const struct nfsd4_callback *cb,
355 struct nfsd4_session *session = cb->cb_clp->cl_cb_session;
396 struct nfsd4_callback *cb)
398 struct nfsd4_session *session = cb->cb_clp->cl_cb_session;
439 nfsd4_mark_cb_fault(cb->cb_clp, status);
447 struct nfsd4_callback *cb)
452 if (cb->cb_minorversion == 0)
460 status = decode_cb_sequence4resok(xdr, cb);
489 const struct nfsd4_callback *cb)
491 const struct nfs4_delegation *dp = cb_to_delegation(cb);
493 .ident = cb->cb_clp->cl_cb_ident,
494 .minorversion = cb->cb_minorversion,
498 encode_cb_sequence4args(xdr, cb, &hdr);
524 struct nfsd4_callback *cb)
534 if (cb != NULL) {
535 status = decode_cb_sequence4res(xdr, cb);
736 /* XXX: release method to ensure we set the cb channel down if
793 struct nfsd4_callback *cb = calldata;
794 struct nfs4_client *clp = cb->cb_clp;
797 cb->cb_minorversion = minorversion;
803 if (list_empty(&cb->cb_per_client)) {
805 cb->cb_done = false;
806 list_add(&cb->cb_per_client, &clp->cl_callbacks);
814 struct nfsd4_callback *cb = calldata;
815 struct nfs4_client *clp = cb->cb_clp;
836 if (cb->cb_done)
839 switch (cb->cb_ops->done(cb, task)) {
853 cb->cb_done = true;
858 struct nfsd4_callback *cb = calldata;
859 struct nfs4_client *clp = cb->cb_clp;
861 if (cb->cb_done) {
863 list_del(&cb->cb_per_client);
866 cb->cb_ops->release(cb);
917 static void nfsd4_process_cb_update(struct nfsd4_callback *cb)
920 struct nfs4_client *clp = cb->cb_clp;
948 memcpy(&conn, &cb->cb_clp->cl_cb_conn, sizeof(struct nfs4_cb_conn));
963 list_for_each_entry(cb, &clp->cl_callbacks, cb_per_client)
964 queue_work(callback_wq, &cb->cb_work);
970 struct nfsd4_callback *cb =
972 struct nfs4_client *clp = cb->cb_clp;
975 if (cb->cb_ops && cb->cb_ops->prepare)
976 cb->cb_ops->prepare(cb);
979 nfsd4_process_cb_update(cb);
984 if (cb->cb_ops && cb->cb_ops->release)
985 cb->cb_ops->release(cb);
988 cb->cb_msg.rpc_cred = clp->cl_cb_cred;
989 rpc_call_async(clnt, &cb->cb_msg, RPC_TASK_SOFT | RPC_TASK_SOFTCONN,
990 cb->cb_ops ? &nfsd4_cb_ops : &nfsd4_cb_probe_ops, cb);
993 void nfsd4_init_cb(struct nfsd4_callback *cb, struct nfs4_client *clp,
996 cb->cb_clp = clp;
997 cb->cb_msg.rpc_proc = &nfs4_cb_procedures[op];
998 cb->cb_msg.rpc_argp = cb;
999 cb->cb_msg.rpc_resp = cb;
1000 cb->cb_ops = ops;
1001 INIT_WORK(&cb->cb_work, nfsd4_run_cb_work);
1002 INIT_LIST_HEAD(&cb->cb_per_client);
1003 cb->cb_done = true;
1006 void nfsd4_run_cb(struct nfsd4_callback *cb)
1008 queue_work(callback_wq, &cb->cb_work);