diff options
author | Vijay Bellur <vijay@gluster.com> | 2010-09-04 12:49:37 +0000 |
---|---|---|
committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-09-05 06:27:28 -0700 |
commit | be223c0df766cf1dae3672fc2e94604162ba9aa8 (patch) | |
tree | f9d171b3327cad01ea62e7768d2693a01dbdd0bd | |
parent | dba7332557fa0e8169c980b67a0f60a50f99bcf8 (diff) |
mgmt/glusterd: Add GET volume support
Signed-off-by: Vijay Bellur <vijay@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 4df404e79..5a3aafe8e 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, |