Motr  M0
repair_cli.c
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2012-2020 Seagate Technology LLC and/or its Affiliates
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * For any questions about this software or licensing,
18  * please email opensource@seagate.com or cortx-questions@seagate.com.
19  *
20  */
21 
22 
23 #include "lib/assert.h"
24 #include "lib/memory.h"
25 #include "fop/fop.h"
26 #include "net/lnet/lnet.h"
27 #include "rpc/rpc.h"
28 #include "rpc/rpclib.h"
29 #include "repair_cli.h"
30 
31 static struct m0_fid process_fid = M0_FID_TINIT('r', 0, 1);
32 static struct m0_net_domain cl_ndom;
33 static struct m0_rpc_client_ctx cl_ctx = {
34  .rcx_net_dom = &cl_ndom,
35  .rcx_max_rpcs_in_flight = MAX_RPCS_IN_FLIGHT,
36  .rcx_fid = &process_fid,
37 };
38 
39 const char *cl_ep_addr;
40 const char *srv_ep_addr[MAX_SERVERS];
41 
42 M0_INTERNAL int repair_client_init(void)
43 {
44  int rc;
46  if (rc == 0) {
47  cl_ctx.rcx_local_addr = cl_ep_addr;
48  cl_ctx.rcx_remote_addr = srv_ep_addr[0];
49 
51  }
52  return rc;
53 }
54 
55 M0_INTERNAL void repair_client_fini(void)
56 {
58 
60 }
61 
62 M0_INTERNAL int repair_rpc_ctx_init(struct rpc_ctx *ctx, const char *sep)
63 {
64  return m0_rpc_client_connect(&ctx->ctx_conn,
65  &ctx->ctx_session,
66  &cl_ctx.rcx_rpc_machine, sep,
69 }
70 
71 M0_INTERNAL void repair_rpc_ctx_fini(struct rpc_ctx *ctx)
72 {
73  if (ctx->ctx_rc != 0)
74  return;
77 }
78 
79 M0_INTERNAL int repair_rpc_post(struct m0_fop *fop,
80  struct m0_rpc_session *session,
81  const struct m0_rpc_item_ops *ri_ops,
82  m0_time_t deadline)
83 {
84  struct m0_rpc_item *item;
85 
86  M0_PRE(fop != NULL);
87  M0_PRE(session != NULL);
88 
89  item = &fop->f_item;
90  item->ri_ops = ri_ops;
93  item->ri_deadline = deadline;
95 
96  return m0_rpc_post(item);
97 }
98 
99 /*
100  * Local variables:
101  * c-indentation-style: "K&R"
102  * c-basic-offset: 8
103  * tab-width: 8
104  * fill-column: 80
105  * scroll-step: 1
106  * End:
107  */
M0_INTERNAL int repair_rpc_ctx_init(struct rpc_ctx *ctx, const char *sep)
Definition: repair_cli.c:62
M0_INTERNAL int m0_rpc_post(struct m0_rpc_item *item)
Definition: rpc.c:63
m0_time_t ri_resend_interval
Definition: item.h:144
#define M0_PRE(cond)
void m0_net_domain_fini(struct m0_net_domain *dom)
Definition: domain.c:71
enum m0_rpc_item_priority ri_prio
Definition: item.h:133
#define NULL
Definition: misc.h:38
const m0_time_t M0_TIME_NEVER
Definition: time.c:108
uint64_t m0_time_t
Definition: time.h:37
int m0_rpc_session_destroy(struct m0_rpc_session *session, m0_time_t abs_timeout)
Definition: session.c:559
static struct m0_net_domain cl_ndom
Definition: repair_cli.c:32
static struct m0_rpc_session session
Definition: formation2.c:38
static struct m0_rpc_item * item
Definition: item.c:56
static struct m0_rm_incoming_ops ri_ops
Definition: wlock_helper.c:71
static struct m0_fid process_fid
Definition: repair_cli.c:31
M0_INTERNAL int m0_rpc_client_connect(struct m0_rpc_conn *conn, struct m0_rpc_session *session, struct m0_rpc_machine *rpc_mach, const char *remote_addr, struct m0_fid *svc_fid, uint64_t max_rpcs_in_flight, m0_time_t abs_timeout)
Definition: rpclib.c:102
#define M0_FID_TINIT(type, container, key)
Definition: fid.h:90
M0_INTERNAL void repair_rpc_ctx_fini(struct rpc_ctx *ctx)
Definition: repair_cli.c:71
int m0_rpc_conn_destroy(struct m0_rpc_conn *conn, m0_time_t abs_timeout)
Definition: conn.c:974
int m0_rpc_client_stop(struct m0_rpc_client_ctx *cctx)
Definition: rpclib.c:217
struct m0_net_xprt * m0_net_xprt_default_get(void)
Definition: net.c:151
int m0_rpc_client_start(struct m0_rpc_client_ctx *cctx)
Definition: rpclib.c:160
const char * cl_ep_addr
Definition: repair_cli.c:39
const char * srv_ep_addr[MAX_SERVERS]
Definition: repair_cli.c:40
int m0_net_domain_init(struct m0_net_domain *dom, const struct m0_net_xprt *xprt)
Definition: domain.c:36
Definition: fid.h:38
const struct m0_rpc_item_ops * ri_ops
Definition: item.h:149
m0_time_t m0_time_from_now(uint64_t secs, long ns)
Definition: time.c:96
struct m0_rpc_session * ri_session
Definition: item.h:147
M0_INTERNAL void repair_client_fini(void)
Definition: repair_cli.c:55
M0_INTERNAL int repair_rpc_post(struct m0_fop *fop, struct m0_rpc_session *session, const struct m0_rpc_item_ops *ri_ops, m0_time_t deadline)
Definition: repair_cli.c:79
static struct m0_fop * fop
Definition: item.c:57
Definition: nucleus.c:42
struct m0_rpc_item f_item
Definition: fop.h:83
int32_t rc
Definition: trigger_fop.h:47
Definition: fop.h:79
m0_time_t ri_deadline
Definition: item.h:141
M0_INTERNAL int repair_client_init(void)
Definition: repair_cli.c:42