From be223c0df766cf1dae3672fc2e94604162ba9aa8 Mon Sep 17 00:00:00 2001 From: Vijay Bellur Date: Sat, 4 Sep 2010 12:49:37 +0000 Subject: mgmt/glusterd: Add GET volume support Signed-off-by: Vijay Bellur Signed-off-by: Vijay Bellur BUG: 971 (dynamic volume management) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971 --- xlators/mgmt/glusterd/src/glusterd-handler.c | 47 +++++++++++++++++----------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 4df404e795b..5a3aafe8edc 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -2867,23 +2867,20 @@ glusterd_get_volumes (rpcsvc_request_t *req, dict_t *dict, int32_t flags) } } else { ret = 0; - goto out; + goto respond; } if (flags == GF_CLI_GET_VOLUME_ALL) { list_for_each_entry (entry, &priv->volumes, vol_list) { - count++; ret = glusterd_add_volume_detail_to_dict (entry, volumes, count); if (ret) - goto out; + goto respond; - } + count++; - ret = dict_set_int32 (volumes, "count", count); + } - if (ret) - goto out; } else if (flags == GF_CLI_GET_NEXT_VOLUME) { ret = dict_get_str (dict, "volname", &volname); @@ -2896,27 +2893,43 @@ glusterd_get_volumes (rpcsvc_request_t *req, dict_t *dict, int32_t flags) } else { ret = glusterd_volinfo_find (volname, &entry); if (ret) - goto out; - entry = list_entry (entry->vol_list.next, typeof (*entry), + goto respond; + entry = list_entry (entry->vol_list.next, + typeof (*entry), vol_list); } if (&entry->vol_list == &priv->volumes) { - ret = dict_set_int32 (volumes, "count", count); + goto respond; } else { - count++; ret = glusterd_add_volume_detail_to_dict (entry, volumes, count); if (ret) - goto out; - - ret = dict_set_int32 (volumes, "count", count); - if (ret) - goto out; + goto respond; + count++; } + } else if (flags == GF_CLI_GET_VOLUME) { + ret = dict_get_str (dict, "volname", &volname); + if (ret) + goto respond; + + ret = glusterd_volinfo_find (volname, &entry); + if (ret) + goto respond; + + ret = glusterd_add_volume_detail_to_dict (entry, + volumes, count); + if (ret) + goto respond; + + count++; } +respond: + ret = dict_set_int32 (volumes, "count", count); + if (ret) + goto out; ret = dict_allocate_and_serialize (volumes, &rsp.volumes.volumes_val, (size_t *)&rsp.volumes.volumes_len); @@ -2926,8 +2939,6 @@ glusterd_get_volumes (rpcsvc_request_t *req, dict_t *dict, int32_t flags) ret = 0; out: - - rsp.op_ret = ret; ret = glusterd_submit_reply (req, &rsp, NULL, 0, NULL, -- cgit