summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cli/src/cli-rpc-ops.c13
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-snapshot.c31
2 files changed, 41 insertions, 3 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index b39ce6a11..fe08a3b95 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -7554,13 +7554,24 @@ list_snap_of_volume (dict_t *dict_n, char *prefix_str) {
* if volume not present then display that volume doesnot exist
* and try to fetch next volume mentioned
*/
+
+ ret = snprintf (buffer, sizeof (buffer), "%s.err_str", prefix_str);
+ if (ret < 0) {
+ goto out;
+ }
+ ret = dict_get_str (dict_n, buffer, &get_buffer);
+ if (ret == 0) {
+ cli_out (get_buffer);
+ ret = 0;
+ goto out;
+ }
ret = snprintf (buffer, sizeof(buffer), "%s.volname", prefix_str);
if (ret < 0) { /* Negative value is an error */
goto out;
}
ret = dict_get_str (dict_n, buffer, &get_buffer);
if (get_buffer == NULL){
- cli_out ("Volume doesnot exist");
+ ret = 0;
goto out;
}
cli_out ("Vol Name : %s", get_buffer);
diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
index eeadb6d74..dbbf84189 100644
--- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c
+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
@@ -1769,6 +1769,9 @@ glusterd_snapshot_get_snaplist (dict_t *voldict, dict_t *rspdict,
char *volname = NULL;
xlator_t *this = NULL;
char key[256] = {0,};
+ gf_boolean_t exist = _gf_false;
+ char *err_str = NULL;
+ char err_prefix[PATH_MAX] = "";
this = THIS;
@@ -1808,12 +1811,36 @@ glusterd_snapshot_get_snaplist (dict_t *voldict, dict_t *rspdict,
goto out;
}
- /* Now for each volume get the snap list */
ret = snprintf (key, sizeof (key), "%s.vol%ld", keyprefix, i);
if (ret < 0) { /* Only negative value is error */
goto out;
}
+ exist = glusterd_check_volume_exists (volname);
+ if (!exist) {
+ err_str = (char *) GF_CALLOC(1, PATH_MAX, sizeof(char));
+ gf_log ("", GF_LOG_ERROR,
+ "Volume %s Does not exist", volname);
+ ret = snprintf (err_str, PATH_MAX,
+ "Volume %s Does not exist",volname);
+ if (ret < 0) {
+ goto out;
+ }
+ ret = snprintf (err_prefix, sizeof (err_prefix),
+ "%s.err_str", key);
+ if (ret < 0) {
+ goto out;
+ }
+ ret = dict_set_str (rspdict, err_prefix, err_str);
+ if (ret < 0 ) {
+ gf_log ("", GF_LOG_ERROR, "Could not"
+ "save the err_str");
+ goto out;
+ }
+ continue;
+ }
+
+ /* Now for each volume get the snap list */
ret = glusterd_snapshot_vol_get_snaplist_by_name (rspdict, key,
volname, snapname, detail);
if (ret) {
@@ -1851,9 +1878,9 @@ glusterd_handle_snapshot_list (rpcsvc_request_t *req, glusterd_op_t op,
char *keyprefix = "snaplist";
char *cgname = NULL;
char *snapname = NULL;
+ char *err_str = "Operation failed";
dict_t *voldict = NULL;
xlator_t *this = NULL;
- char *err_str = "Operation failed";
char key[256] = {0,};
this = THIS;