diff options
author | Vijay Bellur <vijay@gluster.com> | 2010-07-25 00:38:01 +0000 |
---|---|---|
committer | Anand V. Avati <avati@dev.gluster.com> | 2010-07-25 23:29:53 -0700 |
commit | 931a59e2b9130c6e748f2b7193cd0c2ac5a557bf (patch) | |
tree | 2d7e8f31c6865176c3d619646dfcaf3c84abd011 /cli/src | |
parent | ea294f8fd967e8fc6e77558ecf1ab4fd298b7c4f (diff) |
DVM: bug fixes in cli and glusterd for probe, start volumev3.1.0qa2
Signed-off-by: Vijay Bellur <vijay@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 1187 ()
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1187
Diffstat (limited to 'cli/src')
-rw-r--r-- | cli/src/cli-mem-types.h | 1 | ||||
-rw-r--r-- | cli/src/cli.c | 10 | ||||
-rw-r--r-- | cli/src/cli.h | 43 | ||||
-rw-r--r-- | cli/src/cli3_1-cops.c | 194 | ||||
-rw-r--r-- | cli/src/input.c | 1 |
5 files changed, 199 insertions, 50 deletions
diff --git a/cli/src/cli-mem-types.h b/cli/src/cli-mem-types.h index 279e5e90826..b064a965926 100644 --- a/cli/src/cli-mem-types.h +++ b/cli/src/cli-mem-types.h @@ -30,6 +30,7 @@ enum cli_mem_types_ { cli_mt_xlator_cmdline_option_t, cli_mt_char, cli_mt_call_pool_t, + cli_mt_cli_local_t, cli_mt_end }; diff --git a/cli/src/cli.c b/cli/src/cli.c index b31e9feda45..d70c67f8535 100644 --- a/cli/src/cli.c +++ b/cli/src/cli.c @@ -424,6 +424,16 @@ out: return rpc; } +cli_local_t * +cli_local_get () +{ + cli_local_t *local = NULL; + + local = GF_CALLOC (1, sizeof (*local), cli_mt_cli_local_t); + + return local; +} + struct cli_state *global_state; int diff --git a/cli/src/cli.h b/cli/src/cli.h index 808e9236024..140a1af13ac 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -95,6 +95,31 @@ struct cli_state { int remote_port; }; +struct cli_local { + union { + struct { + dict_t *dict; + } create_vol; + + struct { + char *volname; + } start_vol; + + struct { + char *volname; + } stop_vol; + + struct { + char *volname; + } delete_vol; + + struct { + char *volname; + } defrag_vol; + } u; +}; + +typedef struct cli_local cli_local_t; typedef ssize_t (*cli_serialize_t) (struct iovec outmsg, void *args); @@ -115,29 +140,31 @@ int cli_rl_out (struct cli_state *state, const char *fmt, va_list ap); int cli_out (const char *fmt, ...); int -cli_submit_request (void *req, call_frame_t *frame, - rpc_clnt_prog_t *prog, - int procnum, struct iobref *iobref, +cli_submit_request (void *req, call_frame_t *frame, + rpc_clnt_prog_t *prog, + int procnum, struct iobref *iobref, cli_serialize_t sfunc, xlator_t *this, fop_cbk_fn_t cbkfn); int32_t -cli_cmd_volume_create_parse (const char **words, int wordcount, +cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options); int32_t -cli_cmd_volume_set_parse (const char **words, int wordcount, +cli_cmd_volume_set_parse (const char **words, int wordcount, dict_t **options); int32_t -cli_cmd_volume_add_brick_parse (const char **words, int wordcount, +cli_cmd_volume_add_brick_parse (const char **words, int wordcount, dict_t **options); int32_t -cli_cmd_volume_remove_brick_parse (const char **words, int wordcount, +cli_cmd_volume_remove_brick_parse (const char **words, int wordcount, dict_t **options); int32_t -cli_cmd_volume_replace_brick_parse (const char **words, int wordcount, +cli_cmd_volume_replace_brick_parse (const char **words, int wordcount, dict_t **options); + +cli_local_t * cli_local_get (); #endif /* __CLI_H__ */ diff --git a/cli/src/cli3_1-cops.c b/cli/src/cli3_1-cops.c index 444c0031d91..d76485734ef 100644 --- a/cli/src/cli3_1-cops.c +++ b/cli/src/cli3_1-cops.c @@ -54,13 +54,13 @@ gf_cli3_1_probe_cbk (struct rpc_req *req, struct iovec *iov, } gf_log ("cli", GF_LOG_NORMAL, "Received resp to probe"); - cli_out ("Probe %s", (rsp.op_ret) ? "Unsuccessful": "Successful"); + cli_out ("Probe %s", (rsp.op_ret) ? "unsuccessful": "successful"); - cli_cmd_broadcast_response (); - ret = 0; + ret = rsp.op_ret; out: + cli_cmd_broadcast_response (); return ret; } @@ -84,13 +84,13 @@ gf_cli3_1_deprobe_cbk (struct rpc_req *req, struct iovec *iov, } gf_log ("cli", GF_LOG_NORMAL, "Received resp to deprobe"); - cli_out ("Detach %s", (rsp.op_ret) ? "Unsuccessful": "Successful"); + cli_out ("Detach %s", (rsp.op_ret) ? "unsuccessful": "successful"); - cli_cmd_broadcast_response (); - ret = 0; + ret = rsp.op_ret; out: + cli_cmd_broadcast_response (); return ret; } @@ -191,6 +191,7 @@ gf_cli3_1_list_friends_cbk (struct rpc_req *req, struct iovec *iov, ret = 0; out: + cli_cmd_broadcast_response (); if (ret) cli_out ("Command Execution Failed"); @@ -313,6 +314,9 @@ gf_cli3_1_create_volume_cbk (struct rpc_req *req, struct iovec *iov, { gf1_cli_create_vol_rsp rsp = {0,}; int ret = 0; + cli_local_t *local = NULL; + char *volname = NULL; + dict_t *dict = NULL; if (-1 == req->rpc_status) { goto out; @@ -324,14 +328,20 @@ gf_cli3_1_create_volume_cbk (struct rpc_req *req, struct iovec *iov, goto out; } + local = ((call_frame_t *) (myframe))->local; + + dict = local->u.create_vol.dict; + + ret = dict_get_str (dict, "volname", &volname); gf_log ("cli", GF_LOG_NORMAL, "Received resp to create volume"); - cli_out ("Create Volume %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Creation of volume %s has been %s", volname, + (rsp.op_ret) ? "unsuccessful": "successful"); - ret = 0; + ret = rsp.op_ret; out: + cli_cmd_broadcast_response (); return ret; } @@ -341,6 +351,9 @@ gf_cli3_1_delete_volume_cbk (struct rpc_req *req, struct iovec *iov, { gf1_cli_delete_vol_rsp rsp = {0,}; int ret = 0; + cli_local_t *local = NULL; + char *volname = NULL; + call_frame_t *frame = NULL; if (-1 == req->rpc_status) { goto out; @@ -352,14 +365,22 @@ gf_cli3_1_delete_volume_cbk (struct rpc_req *req, struct iovec *iov, goto out; } + frame = myframe; + local = frame->local; + + if (local) + volname = local->u.delete_vol.volname; + gf_log ("cli", GF_LOG_NORMAL, "Received resp to delete volume"); - cli_out ("Delete Volume %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Deleting volume %s has been %s", volname, + (rsp.op_ret) ? "unsuccessful": "successful"); - ret = 0; + ret = rsp.op_ret; out: + cli_cmd_broadcast_response (); + gf_log ("", GF_LOG_NORMAL, "Returning with %d", ret); return ret; } @@ -367,8 +388,11 @@ int gf_cli3_1_start_volume_cbk (struct rpc_req *req, struct iovec *iov, int count, void *myframe) { - gf1_cli_start_vol_rsp rsp = {0,}; + gf1_cli_start_vol_rsp rsp = {0,}; int ret = 0; + cli_local_t *local = NULL; + char *volname = NULL; + call_frame_t *frame = NULL; if (-1 == req->rpc_status) { goto out; @@ -380,14 +404,22 @@ gf_cli3_1_start_volume_cbk (struct rpc_req *req, struct iovec *iov, goto out; } + frame = myframe; + + if (frame) + local = frame->local; + + if (local) + volname = local->u.start_vol.volname; gf_log ("cli", GF_LOG_NORMAL, "Received resp to start volume"); - cli_out ("Start Volume %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Starting volume %s has been %s", volname, + (rsp.op_ret) ? "unsuccessful": "successful"); - ret = 0; + ret = rsp.op_ret; out: + cli_cmd_broadcast_response (); return ret; } @@ -397,6 +429,9 @@ gf_cli3_1_stop_volume_cbk (struct rpc_req *req, struct iovec *iov, { gf1_cli_stop_vol_rsp rsp = {0,}; int ret = 0; + cli_local_t *local = NULL; + char *volname = NULL; + call_frame_t *frame = NULL; if (-1 == req->rpc_status) { goto out; @@ -408,14 +443,22 @@ gf_cli3_1_stop_volume_cbk (struct rpc_req *req, struct iovec *iov, goto out; } + frame = myframe; + + if (frame) + local = frame->local; + + if (local) + volname = local->u.start_vol.volname; gf_log ("cli", GF_LOG_NORMAL, "Received resp to stop volume"); - cli_out ("Delete Volume %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Stopping volume %s has been %s", volname, + (rsp.op_ret) ? "unsuccessful": "successful"); - ret = 0; + ret = rsp.op_ret; out: + cli_cmd_broadcast_response (); return ret; } @@ -425,6 +468,9 @@ gf_cli3_1_defrag_volume_cbk (struct rpc_req *req, struct iovec *iov, { gf1_cli_defrag_vol_rsp rsp = {0,}; int ret = 0; + cli_local_t *local = NULL; + char *volname = NULL; + call_frame_t *frame = NULL; if (-1 == req->rpc_status) { goto out; @@ -436,14 +482,22 @@ gf_cli3_1_defrag_volume_cbk (struct rpc_req *req, struct iovec *iov, goto out; } + frame = myframe; + + if (frame) + local = frame->local; + + if (local) + volname = local->u.start_vol.volname; gf_log ("cli", GF_LOG_NORMAL, "Received resp to probe"); - cli_out ("Defrag Volume %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Defrag of volume %s has been %s", volname, + (rsp.op_ret) ? "unsuccessful": "successful"); - ret = 0; + ret = rsp.op_ret; out: + cli_cmd_broadcast_response (); return ret; } @@ -466,10 +520,10 @@ gf_cli3_1_rename_volume_cbk (struct rpc_req *req, struct iovec *iov, gf_log ("cli", GF_LOG_NORMAL, "Received resp to probe"); - cli_out ("Rename Volume %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Rename volume %s", (rsp.op_ret) ? "unsuccessful": + "successful"); - ret = 0; + ret = rsp.op_ret; out: return ret; @@ -494,10 +548,10 @@ gf_cli3_1_set_volume_cbk (struct rpc_req *req, struct iovec *iov, gf_log ("cli", GF_LOG_NORMAL, "Received resp to set"); - cli_out ("Set Volume %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Set volume %s", (rsp.op_ret) ? "unsuccessful": + "successful"); - ret = 0; + ret = rsp.op_ret; out: return ret; @@ -522,12 +576,13 @@ gf_cli3_1_add_brick_cbk (struct rpc_req *req, struct iovec *iov, gf_log ("cli", GF_LOG_NORMAL, "Received resp to add brick"); - cli_out ("Add Brick %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Add Brick %s", (rsp.op_ret) ? "unsuccessful": + "successful"); - ret = 0; + ret = rsp.op_ret; out: + cli_cmd_broadcast_response (); return ret; } @@ -550,10 +605,10 @@ gf_cli3_1_remove_brick_cbk (struct rpc_req *req, struct iovec *iov, } gf_log ("cli", GF_LOG_NORMAL, "Received resp to remove brick"); - cli_out ("Remove Brick %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Remove Brick %s", (rsp.op_ret) ? "unsuccessful": + "successful"); - ret = 0; + ret = rsp.op_ret; out: return ret; @@ -579,10 +634,10 @@ gf_cli3_1_replace_brick_cbk (struct rpc_req *req, struct iovec *iov, gf_log ("cli", GF_LOG_NORMAL, "Received resp to replace brick"); - cli_out ("Replace Brick %s", (rsp.op_ret) ? "Unsuccessful": - "Successful"); + cli_out ("Replace Brick %s", (rsp.op_ret) ? "unsuccessful": + "successful"); - ret = 0; + ret = rsp.op_ret; out: return ret; @@ -620,7 +675,7 @@ gf_cli3_1_probe (call_frame_t *frame, xlator_t *this, this, gf_cli3_1_probe_cbk); if (!ret) { - //ret = cli_cmd_await_response (); + ret = cli_cmd_await_response (); } out: gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret); @@ -660,7 +715,7 @@ gf_cli3_1_deprobe (call_frame_t *frame, xlator_t *this, this, gf_cli3_1_deprobe_cbk); if (!ret) { - //ret = cli_cmd_await_response (); + ret = cli_cmd_await_response (); } out: gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret); @@ -687,7 +742,7 @@ gf_cli3_1_list_friends (call_frame_t *frame, xlator_t *this, this, gf_cli3_1_list_friends_cbk); if (!ret) { - //ret = cli_cmd_await_response (); + ret = cli_cmd_await_response (); } out: gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret); @@ -728,13 +783,14 @@ gf_cli3_1_create_volume (call_frame_t *frame, xlator_t *this, gf1_cli_create_vol_req req = {0,}; int ret = 0; dict_t *dict = NULL; + cli_local_t *local = NULL; if (!frame || !this || !data) { ret = -1; goto out; } - dict = data; + dict = dict_ref ((dict_t *)data); ret = dict_get_str (dict, "volname", &req.volname); @@ -759,13 +815,20 @@ gf_cli3_1_create_volume (call_frame_t *frame, xlator_t *this, goto out; } + local = cli_local_get (); + + if (local) { + local->u.create_vol.dict = dict; + frame->local = local; + } + ret = cli_submit_request (&req, frame, cli_rpc_prog, GD_MGMT_CLI_CREATE_VOLUME, NULL, gf_xdr_from_cli_create_vol_req, this, gf_cli3_1_create_volume_cbk); if (!ret) { - //ret = cli_cmd_await_response (); + ret = cli_cmd_await_response (); } @@ -785,18 +848,29 @@ gf_cli3_1_delete_volume (call_frame_t *frame, xlator_t *this, { gf1_cli_delete_vol_req req = {0,}; int ret = 0; + cli_local_t *local = NULL; if (!frame || !this || !data) { ret = -1; goto out; } + local = cli_local_get (); + + if (local) { + local->u.delete_vol.volname = data; + frame->local = local; + } + req.volname = data; ret = cli_submit_request (&req, frame, cli_rpc_prog, GD_MGMT_CLI_DELETE_VOLUME, NULL, gf_xdr_from_cli_delete_vol_req, this, gf_cli3_1_delete_volume_cbk); + if (!ret) { + ret = cli_cmd_await_response (); + } out: gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret); @@ -810,12 +884,20 @@ gf_cli3_1_start_volume (call_frame_t *frame, xlator_t *this, { gf1_cli_start_vol_req req = {0,}; int ret = 0; + cli_local_t *local = NULL; if (!frame || !this || !data) { ret = -1; goto out; } + local = cli_local_get (); + + if (local) { + local->u.start_vol.volname = data; + frame->local = local; + } + req.volname = data; ret = cli_submit_request (&req, frame, cli_rpc_prog, @@ -823,6 +905,9 @@ gf_cli3_1_start_volume (call_frame_t *frame, xlator_t *this, gf_xdr_from_cli_start_vol_req, this, gf_cli3_1_start_volume_cbk); + if (!ret) { + ret = cli_cmd_await_response (); + } out: gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret); @@ -835,6 +920,7 @@ gf_cli3_1_stop_volume (call_frame_t *frame, xlator_t *this, { gf1_cli_stop_vol_req req = {0,}; int ret = 0; + cli_local_t *local = NULL; if (!frame || !this || !data) { ret = -1; @@ -843,11 +929,21 @@ gf_cli3_1_stop_volume (call_frame_t *frame, xlator_t *this, req.volname = data; + local = cli_local_get (); + + if (local) { + local->u.stop_vol.volname = data; + frame->local = local; + } + ret = cli_submit_request (&req, frame, cli_rpc_prog, GD_MGMT_CLI_STOP_VOLUME, NULL, gf_xdr_from_cli_stop_vol_req, this, gf_cli3_1_stop_volume_cbk); + if (!ret) { + ret = cli_cmd_await_response (); + } out: gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret); @@ -860,12 +956,20 @@ gf_cli3_1_defrag_volume (call_frame_t *frame, xlator_t *this, { gf1_cli_defrag_vol_req req = {0,}; int ret = 0; + cli_local_t *local = NULL; if (!frame || !this || !data) { ret = -1; goto out; } + local = cli_local_get (); + + if (local) { + local->u.defrag_vol.volname = data; + frame->local = local; + } + req.volname = data; ret = cli_submit_request (&req, frame, cli_rpc_prog, @@ -873,6 +977,9 @@ gf_cli3_1_defrag_volume (call_frame_t *frame, xlator_t *this, gf_xdr_from_cli_defrag_vol_req, this, gf_cli3_1_defrag_volume_cbk); + if (!ret) { + ret = cli_cmd_await_response (); + } out: gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret); @@ -995,6 +1102,9 @@ gf_cli3_1_add_brick (call_frame_t *frame, xlator_t *this, gf_xdr_from_cli_add_brick_req, this, gf_cli3_1_add_brick_cbk); + if (!ret) { + ret = cli_cmd_await_response (); + } out: gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret); diff --git a/cli/src/input.c b/cli/src/input.c index 314058e052a..a577a0f4c13 100644 --- a/cli/src/input.c +++ b/cli/src/input.c @@ -42,6 +42,7 @@ cli_batch (void *d) state = d; ret = cli_cmd_process (state, state->argc, state->argv); + gf_log ("", GF_LOG_NORMAL, "Exiting with: %d", ret); exit (ret); return NULL; |