summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-store.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-store.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-store.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-store.c78
1 files changed, 29 insertions, 49 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c
index 8dee4d421..944652bd8 100644
--- a/xlators/mgmt/glusterd/src/glusterd-store.c
+++ b/xlators/mgmt/glusterd/src/glusterd-store.c
@@ -1974,10 +1974,9 @@ out:
int32_t
-glusterd_store_retrieve_rbstate (char *volname, glusterd_snap_t *snap)
+glusterd_store_retrieve_rbstate (glusterd_volinfo_t *volinfo)
{
int32_t ret = -1;
- glusterd_volinfo_t *volinfo = NULL;
gf_store_iter_t *iter = NULL;
char *key = NULL;
char *value = NULL;
@@ -1985,19 +1984,13 @@ glusterd_store_retrieve_rbstate (char *volname, glusterd_snap_t *snap)
glusterd_conf_t *priv = NULL;
char path[PATH_MAX] = {0,};
gf_store_op_errno_t op_errno = GD_STORE_SUCCESS;
+ xlator_t *this = NULL;
- priv = THIS->private;
-
- if (snap) {
- volinfo = snap->snap_volume;
- } else {
- ret = glusterd_volinfo_find (volname, &volinfo);
- if (ret) {
- gf_log (THIS->name, GF_LOG_ERROR, "Couldn't get"
- "volinfo for %s.", volname);
- goto out;
- }
- }
+ this = THIS;
+ GF_ASSERT (this);
+ priv = this->private;
+ GF_ASSERT (priv);
+ GF_ASSERT (volinfo);
GLUSTERD_GET_VOLUME_DIR(volpath, volinfo, priv);
snprintf (path, sizeof (path), "%s/%s", volpath,
@@ -2074,16 +2067,15 @@ glusterd_store_retrieve_rbstate (char *volname, glusterd_snap_t *snap)
goto out;
out:
- gf_log ("", GF_LOG_DEBUG, "Returning with %d", ret);
+ gf_log (this->name, GF_LOG_TRACE, "Returning with %d", ret);
return ret;
}
int32_t
-glusterd_store_retrieve_node_state (char *volname, glusterd_snap_t *snap)
+glusterd_store_retrieve_node_state (glusterd_volinfo_t *volinfo)
{
int32_t ret = -1;
- glusterd_volinfo_t *volinfo = NULL;
gf_store_iter_t *iter = NULL;
char *key = NULL;
char *value = NULL;
@@ -2091,19 +2083,13 @@ glusterd_store_retrieve_node_state (char *volname, glusterd_snap_t *snap)
glusterd_conf_t *priv = NULL;
char path[PATH_MAX] = {0,};
gf_store_op_errno_t op_errno = GD_STORE_SUCCESS;
+ xlator_t *this = NULL;
- priv = THIS->private;
-
- if (snap) {
- volinfo = snap->snap_volume;
- } else {
- ret = glusterd_volinfo_find (volname, &volinfo);
- if (ret) {
- gf_log (THIS->name, GF_LOG_ERROR, "Couldn't get"
- "volinfo for %s.", volname);
- goto out;
- }
- }
+ this = THIS;
+ GF_ASSERT (this);
+ priv = this->private;
+ GF_ASSERT (priv);
+ GF_ASSERT (volinfo);
GLUSTERD_GET_VOLUME_DIR(volpath, volinfo, priv);
snprintf (path, sizeof (path), "%s/%s", volpath,
@@ -2155,7 +2141,7 @@ glusterd_store_retrieve_node_state (char *volname, glusterd_snap_t *snap)
goto out;
out:
- gf_log ("", GF_LOG_DEBUG, "Returning with %d", ret);
+ gf_log (this->name, GF_LOG_TRACE, "Returning with %d", ret);
return ret;
}
@@ -2383,7 +2369,7 @@ out:
return ret;
}
-int32_t
+glusterd_volinfo_t*
glusterd_store_retrieve_volume (char *volname, glusterd_snap_t *snap)
{
int32_t ret = -1;
@@ -2437,11 +2423,15 @@ glusterd_store_retrieve_volume (char *volname, glusterd_snap_t *snap)
glusterd_list_add_snapvol (origin_volinfo, volinfo);
}
out:
- /*TODO: cleanup volinfo pointer on failure */
+ if (ret) {
+ if (volinfo)
+ glusterd_volinfo_delete (volinfo);
+ volinfo = NULL;
+ }
- gf_log ("", GF_LOG_TRACE, "Returning with %d", ret);
+ gf_log (this->name, GF_LOG_TRACE, "Returning with %d", ret);
- return ret;
+ return volinfo;
}
inline void
@@ -2575,38 +2565,28 @@ glusterd_store_retrieve_volumes (xlator_t *this, glusterd_snap_t *snap)
if ( entry->d_type != DT_DIR )
goto next;
- ret = glusterd_store_retrieve_volume (entry->d_name, snap);
- if (ret) {
+ volinfo = glusterd_store_retrieve_volume (entry->d_name, snap);
+ if (!volinfo) {
gf_log ("", GF_LOG_ERROR, "Unable to restore "
"volume: %s", entry->d_name);
+ ret = -1;
goto out;
}
- ret = glusterd_store_retrieve_rbstate (entry->d_name, snap);
+ ret = glusterd_store_retrieve_rbstate (volinfo);
if (ret) {
/* Backward compatibility */
gf_log ("", GF_LOG_INFO, "Creating a new rbstate "
"for volume: %s.", entry->d_name);
- if (snap) {
- volinfo = snap->snap_volume;
- } else {
- ret = glusterd_volinfo_find (entry->d_name,
- &volinfo);
- }
ret = glusterd_store_create_rbstate_shandle_on_absence (volinfo);
ret = glusterd_store_perform_rbstate_store (volinfo);
}
- ret = glusterd_store_retrieve_node_state (entry->d_name, snap);
+ ret = glusterd_store_retrieve_node_state (volinfo);
if (ret) {
/* Backward compatibility */
gf_log ("", GF_LOG_INFO, "Creating a new node_state "
"for volume: %s.", entry->d_name);
- if (snap) {
- volinfo = snap->snap_volume;
- } else {
- ret = glusterd_volinfo_find (entry->d_name, &volinfo);
- }
glusterd_store_create_nodestate_sh_on_absence (volinfo);
ret = glusterd_store_perform_node_state_store (volinfo);