diff options
Diffstat (limited to 'xlators/mgmt/glusterd')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-snapshot.c | 31 |
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; |