23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_POOL 99 ctx->ctx_sep, M0_CST_IOS,
127 "-O Q(uery) or S(et): Query device state or Set device state\n" 129 "[-s device_state]: if Set, the device state. The states supported are:\n" 130 " 0: M0_PNDS_ONLINE\n" 131 " 1: M0_PNDS_FAILED\n" 132 " 2: M0_PNDS_OFFLINE\n" 133 "-C Client_end_point\n" 134 "-S Server_end_point [-S Server_end_point ]: max number is %d\n",
MAX_SERVERS);
137 int main(
int argc,
char *argv[])
151 fprintf(stderr,
"Cannot init Motr: %d\n",
rc);
157 LAMBDA(
void, (
const char *str) {
159 if (!M0_IN(
op[0], (
'Q',
'q',
165 LAMBDA(
void, (
const char *str)
173 LAMBDA(
void, (int64_t device_state)
181 LAMBDA(
void, (
const char *str) {
185 LAMBDA(
void, (
const char *str) {
201 fprintf(stderr,
"Insane arguments: op=%s cl_ep=%s " 202 "dev_nr=%d di=%d ds=%d srv_cnt=%d\n",
210 fprintf(stderr,
"invalid device state: %lld\n",
218 fprintf(stderr,
"Cannot init client: %d\n",
rc);
227 fprintf(stderr,
"Not enough memory. srv count = %d\n",
srv_cnt);
236 fprintf(stderr,
"Cannot init rpc ctx = %d\n",
rc);
250 if (
op[0] ==
'Q' ||
op[0] ==
'q') {
256 fprintf(stderr,
"Not enough memory for fop\n");
264 for (j = 0; j <
dev_nr; ++j)
273 fprintf(stderr,
"Not enough memory for fop\n");
281 for (j = 0; j <
dev_nr; ++j) {
289 fprintf(stderr,
"sending/posting to %s\n",
srv_ep_addr[
i]);
295 if (
op[0] ==
'Q' ||
op[0] ==
'q') {
304 "Query: fid = "FID_F" state= %d rc = %d\n",
309 (
int)query_fop_rep->
fqr_rc);
316 fprintf(stderr,
"Set got reply: rc = %d\n",
317 (
int)set_fop_rep->
fps_rc);
324 printf(
"Time: %lu.%2.2lu sec\n", (
unsigned long)
m0_time_seconds(delta),
335 #undef M0_TRACE_SUBSYSTEM
#define M0_GETOPTS(progname, argc, argv,...)
struct m0_fop_poolmach_dev_idx fpq_dev_idx
#define M0_ALLOC_ARR(arr, nr)
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
void m0_net_domain_fini(struct m0_net_domain *dom)
static int poolmach_client_init(void)
const m0_time_t M0_TIME_NEVER
static struct io_request req
static struct m0_mutex poolmach_wait_mutex
#define M0_LOG(level,...)
struct m0_fop_poolmach_dev * fpi_dev
M0_INTERNAL int m0_rpc_client_find_connect(struct m0_rpc_conn *conn, struct m0_rpc_session *session, struct m0_rpc_machine *rpc_mach, const char *remote_addr, enum m0_conf_service_type stype, uint64_t max_rpcs_in_flight, m0_time_t abs_timeout)
uint64_t m0_time_nanoseconds(const m0_time_t time)
int m0_rpc_session_destroy(struct m0_rpc_session *session, m0_time_t abs_timeout)
struct m0_fop_poolmach_dev * fpi_dev
void * m0_fop_data(const struct m0_fop *fop)
static struct m0_chan poolmach_wait
int m0_init(struct m0 *instance)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
static struct m0_fid device_fid_arr[MAX_DEV_NR]
struct m0_fop_getxattr_rep * rep
static const char * cl_ep_addr
#define M0_NUMBERARG(ch, desc, func)
#define M0_STRINGARG(ch, desc, func)
return M0_ERR(-EOPNOTSUPP)
static void print_help(void)
struct m0_fop_type m0_fop_poolmach_set_fopt
#define M0_FID_TINIT(type, container, key)
#define M0_FORMATARG(ch, desc, fmt, ptr)
int main(int argc, char *argv[])
M0_INTERNAL void m0_chan_init(struct m0_chan *chan, struct m0_mutex *ch_guard)
static int poolmach_rpc_ctx_init(struct rpc_ctx *ctx, const char *sep)
m0_time_t m0_time_now(void)
struct m0_fop_type m0_fop_poolmach_query_fopt
struct m0_fop_poolmach_dev_info fps_dev_info
int m0_rpc_conn_destroy(struct m0_rpc_conn *conn, m0_time_t abs_timeout)
int m0_rpc_client_stop(struct m0_rpc_client_ctx *cctx)
struct m0_net_xprt * m0_net_xprt_default_get(void)
int m0_rpc_client_start(struct m0_rpc_client_ctx *cctx)
struct m0_fop_poolmach_dev_info fqr_dev_info
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
struct m0_fop_type trigger_fop_fopt
int m0_rpc_post_sync(struct m0_fop *fop, struct m0_rpc_session *session, const struct m0_rpc_item_ops *ri_ops, m0_time_t deadline)
struct m0_rpc_session ctx_session
M0_INTERNAL int m0_fid_sscanf(const char *s, struct m0_fid *fid)
uint64_t m0_time_seconds(const m0_time_t time)
int m0_net_domain_init(struct m0_net_domain *dom, const struct m0_net_xprt *xprt)
static struct m0_fid cl_process_fid
struct m0_rpc_conn ctx_conn
static void poolmach_rpc_ctx_fini(struct rpc_ctx *ctx)
m0_time_t m0_time_from_now(uint64_t secs, long ns)
m0_time_t m0_time_sub(const m0_time_t t1, const m0_time_t t2)
struct m0_fop * m0_fop_alloc_at(struct m0_rpc_session *sess, struct m0_fop_type *fopt)
static int start(struct m0_fom *fom)
void m0_fop_put_lock(struct m0_fop *fop)
static struct m0 instance
struct m0_fop * m0_rpc_item_to_fop(const struct m0_rpc_item *item)
static void poolmach_client_fini(void)
static const char * srv_ep_addr[MAX_SERVERS]
static struct m0_net_domain cl_ndom
static int64_t device_state_arr[MAX_DEV_NR]