summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-snapshot.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-snapshot.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-snapshot.c31
1 files changed, 29 insertions, 2 deletions
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;