summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/mgmt/glusterd')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-handshake.c20
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c8
2 files changed, 21 insertions, 7 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handshake.c b/xlators/mgmt/glusterd/src/glusterd-handshake.c
index 809d462dec7..d341b4918d2 100644
--- a/xlators/mgmt/glusterd/src/glusterd-handshake.c
+++ b/xlators/mgmt/glusterd/src/glusterd-handshake.c
@@ -53,6 +53,7 @@ get_snap_volname_and_volinfo(const char *volpath, char **volname,
glusterd_snap_t *snap = NULL;
xlator_t *this = NULL;
char *tmp_str_token = NULL;
+ char *volfile_token = NULL;
this = THIS;
GF_ASSERT(this);
@@ -103,21 +104,34 @@ get_snap_volname_and_volinfo(const char *volpath, char **volname,
*/
ret = glusterd_volinfo_find(volname_token, volinfo);
if (ret) {
- *volname = gf_strdup(volname_token);
+ gf_msg(this->name, GF_LOG_WARNING, 0, GD_MSG_VOLINFO_GET_FAIL,
+ "failed to get the volinfo for the volume %s", volname_token);
+
+ /* Get the actual volfile name. */
+ volfile_token = strtok_r(NULL, "/", &save_ptr);
+ *volname = gf_strdup(volfile_token);
if (NULL == *volname) {
ret = -1;
goto out;
}
+ /*
+ * Ideally, this should succeed as volname_token now contains
+ * the name of the snap volume (i.e. name of the volume that
+ * represents the snapshot). But, if for some reason, volinfo
+ * for the snap volume is not found, then try to get from the
+ * name of the volfile. Name of the volfile is like this.
+ * <snap volume name>.<hostname>.<brick path>.vol
+ */
ret = glusterd_snap_volinfo_find(volname_token, snap, volinfo);
if (ret) {
/* Split the volume name */
- vol = strtok_r(volname_token, ".", &save_ptr);
+ vol = strtok_r(volfile_token, ".", &save_ptr);
if (!vol) {
gf_msg(this->name, GF_LOG_ERROR, EINVAL, GD_MSG_INVALID_ENTRY,
"Invalid "
"volname (%s)",
- volname_token);
+ volfile_token);
goto out;
}
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index 1214b6cbb19..40109ccb954 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -2131,10 +2131,10 @@ retry:
}
if (volinfo->is_snap_volume) {
- len = snprintf(volfile, PATH_MAX, "/%s/%s/%s.%s.%s",
+ len = snprintf(volfile, PATH_MAX, "/%s/%s/%s/%s.%s.%s",
GLUSTERD_VOL_SNAP_DIR_PREFIX,
volinfo->snapshot->snapname, volinfo->volname,
- brickinfo->hostname, exp_path);
+ volinfo->volname, brickinfo->hostname, exp_path);
} else {
len = snprintf(volfile, PATH_MAX, "%s.%s.%s", volinfo->volname,
brickinfo->hostname, exp_path);
@@ -5663,10 +5663,10 @@ attach_brick(xlator_t *this, glusterd_brickinfo_t *brickinfo,
GLUSTERD_GET_BRICK_PIDFILE(pidfile2, volinfo, brickinfo, conf);
if (volinfo->is_snap_volume) {
- len = snprintf(full_id, sizeof(full_id), "/%s/%s/%s.%s.%s",
+ len = snprintf(full_id, sizeof(full_id), "/%s/%s/%s/%s.%s.%s",
GLUSTERD_VOL_SNAP_DIR_PREFIX,
volinfo->snapshot->snapname, volinfo->volname,
- brickinfo->hostname, unslashed);
+ volinfo->volname, brickinfo->hostname, unslashed);
} else {
len = snprintf(full_id, sizeof(full_id), "%s.%s.%s", volinfo->volname,
brickinfo->hostname, unslashed);