summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-snapshot.c
diff options
context:
space:
mode:
authorVijaikumar M <vmallika@redhat.com>2014-03-25 15:58:18 +0530
committerRajesh Joseph <rjoseph@redhat.com>2014-03-25 22:45:50 -0700
commit58dfda2a4e0ffad3a543fb47242c5cfdf0ea6bed (patch)
tree43257565469ff76d0f15277f3268a865006bb300 /xlators/mgmt/glusterd/src/glusterd-snapshot.c
parentc36c95a79c2f73f35727c6f8cba0586714663fd9 (diff)
glusterd/snapshot : remove snap_volume variable from struct glusterd_snap_
Change-Id: I3c5eae3f199d97a2fe70599e2cdb4c357d20f20d Signed-off-by: Vijaikumar M <vmallika@redhat.com> Reviewed-on: http://review.gluster.org/7197 Reviewed-by: Rajesh Joseph <rjoseph@redhat.com> Tested-by: Rajesh Joseph <rjoseph@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-snapshot.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-snapshot.c85
1 files changed, 51 insertions, 34 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
index 7068a04bb..90f0c6c22 100644
--- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c
+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c
@@ -794,11 +794,6 @@ glusterd_list_add_snapvol (glusterd_volinfo_t *origin_vol,
GF_ASSERT (snap);
list_add_tail (&snap_vol->vol_list, &snap->volumes);
- /* TODO: As of now there is only one volume per snapshot.
- Below line should be removed once multiple volumes for
- snap driven structucture is implemented */
- snap->snap_volume = snap_vol;
-
LOCK (&origin_vol->lock);
{
list_add_order (&snap_vol->snapvol_list,
@@ -2794,7 +2789,6 @@ glusterd_do_snap_vol (glusterd_volinfo_t *origin_vol, glusterd_snap_t *snap,
snap_vol->is_snap_volume = _gf_true;
strcpy (snap_vol->parent_volname, origin_vol->volname);
snap_vol->snapshot = snap;
- snap->snap_volume = snap_vol;
glusterd_auth_set_username (snap_vol, username);
glusterd_auth_set_password (snap_vol, password);
@@ -3959,14 +3953,17 @@ out :
int
glusterd_get_single_snap_status (char **op_errstr, dict_t *rsp_dict,
- char *keyprefix,
- glusterd_volinfo_t *snap_volinfo)
+ char *keyprefix, glusterd_snap_t *snap)
{
- int ret = -1;
- xlator_t *this = NULL;
- char key[PATH_MAX] = "";
- glusterd_brickinfo_t *brickinfo = NULL;
- int i = 0;
+ int ret = -1;
+ xlator_t *this = NULL;
+ char key[PATH_MAX] = "";
+ char brickkey[PATH_MAX] = "";
+ glusterd_volinfo_t *snap_volinfo = NULL;
+ glusterd_volinfo_t *tmp_volinfo = NULL;
+ glusterd_brickinfo_t *brickinfo = NULL;
+ int volcount = 0;
+ int brickcount = 0;
this = THIS;
GF_ASSERT (this);
@@ -3974,37 +3971,61 @@ glusterd_get_single_snap_status (char **op_errstr, dict_t *rsp_dict,
GF_ASSERT (op_errstr);
GF_ASSERT (rsp_dict);
GF_ASSERT (keyprefix);
- GF_ASSERT (snap_volinfo);
+ GF_ASSERT (snap);
- list_for_each_entry (brickinfo, &snap_volinfo->bricks, brick_list) {
- if (!glusterd_is_local_brick (this, snap_volinfo, brickinfo)) {
- i++;
- continue;
+ list_for_each_entry_safe (snap_volinfo, tmp_volinfo, &snap->volumes,
+ vol_list) {
+ ret = snprintf (key, sizeof (key), "%s.vol%d", keyprefix,
+ volcount);
+ if (ret < 0) {
+ goto out;
}
+ list_for_each_entry (brickinfo, &snap_volinfo->bricks,
+ brick_list) {
+ if (!glusterd_is_local_brick (this, snap_volinfo,
+ brickinfo)) {
+ brickcount++;
+ continue;
+ }
- ret = glusterd_get_single_brick_status (op_errstr, rsp_dict,
- keyprefix, i,
- snap_volinfo,
- brickinfo);
+ ret = glusterd_get_single_brick_status (op_errstr,
+ rsp_dict, key, brickcount,
+ snap_volinfo, brickinfo);
+
+ if (ret) {
+ gf_log (this->name, GF_LOG_ERROR, "Getting "
+ "single snap status failed");
+ goto out;
+ }
+ brickcount++;
+ }
+ ret = snprintf (brickkey, sizeof (brickkey), "%s.brickcount",
+ key);
+ if (ret < 0) {
+ goto out;
+ }
+ ret = dict_set_int32 (rsp_dict, brickkey, brickcount);
if (ret) {
- gf_log (this->name, GF_LOG_ERROR, "Getting single "
- "snap status failed");
+ gf_log (this->name, GF_LOG_ERROR,
+ "Could not save brick count");
goto out;
}
- i++;
+ volcount++;
}
- ret = snprintf (key, sizeof (key), "%s.brickcount", keyprefix);
+
+ ret = snprintf (key, sizeof (key), "%s.volcount", keyprefix);
if (ret < 0) {
goto out;
}
- ret = dict_set_int32 (rsp_dict, key, i);
+ ret = dict_set_int32 (rsp_dict, key, volcount);
if (ret) {
gf_log (this->name, GF_LOG_ERROR,
- "Could not save brick count");
+ "Could not save volcount");
goto out;
}
+
out :
return ret;
@@ -4068,12 +4089,8 @@ glusterd_get_each_snap_object_status (char **op_errstr, dict_t *rsp_dict,
temp = NULL;
- ret = snprintf (key, sizeof (key), "%s.vol0", keyprefix);
- if (ret < 0) {
- goto out;
- }
- ret = glusterd_get_single_snap_status (op_errstr, rsp_dict, key,
- snap->snap_volume);
+ ret = glusterd_get_single_snap_status (op_errstr, rsp_dict, keyprefix,
+ snap);
if (ret) {
gf_log (this->name, GF_LOG_ERROR,
"Could not get single snap status");