summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAtin Mukherjee <amukherj@redhat.com>2017-05-09 21:05:50 +0530
committerShyamsundar Ranganathan <srangana@redhat.com>2017-05-16 00:32:25 +0000
commit196597081a8e1feb792921d4f4e6517fd37d6538 (patch)
tree4de06a79578018563fd9d69ed080198201dffae2
parent6c809f40a1a0b500aa09ccaa597dc7d95b1e5146 (diff)
glusterfsd: send PARENT_UP on brick attach
With brick multiplexing being enabled, if a brick is instance attached to a process then a PARENT_UP event is needed so that it reaches right till posix layer and then from posix CHILD_UP event is sent back to all the children. >Reviewed-on: https://review.gluster.org/17225 >NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> >Smoke: Gluster Build System <jenkins@build.gluster.org> >CentOS-regression: Gluster Build System <jenkins@build.gluster.org> >Reviewed-by: Jeff Darcy <jeff@pl.atyp.us> >(cherry picked from commit 86ad032949cb80b6ba3df9dc8268243529d4eb84) Change-Id: Ic341086adb3bbbde0342af518e1b273dd2f669b9 BUG: 1450729 Signed-off-by: Atin Mukherjee <amukherj@redhat.com> Reviewed-on: https://review.gluster.org/17289 Smoke: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Shyamsundar Ranganathan <srangana@redhat.com>
-rw-r--r--glusterfsd/src/glusterfsd-mgmt.c15
-rw-r--r--libglusterfs/src/glusterfs.h4
-rw-r--r--libglusterfs/src/graph.c5
3 files changed, 19 insertions, 5 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c
index 6db2a0fca3f..5bc87c7afd6 100644
--- a/glusterfsd/src/glusterfsd-mgmt.c
+++ b/glusterfsd/src/glusterfsd-mgmt.c
@@ -827,6 +827,7 @@ glusterfs_handle_attach (rpcsvc_request_t *req)
int32_t ret = -1;
gd1_mgmt_brick_op_req xlator_req = {0,};
xlator_t *this = NULL;
+ glusterfs_graph_t *newgraph = NULL;
GF_ASSERT (req);
this = THIS;
@@ -840,13 +841,22 @@ glusterfs_handle_attach (rpcsvc_request_t *req)
req->rpc_err = GARBAGE_ARGS;
return -1;
}
+ ret = 0;
if (this->ctx->active) {
gf_log (this->name, GF_LOG_INFO,
"got attach for %s", xlator_req.name);
ret = glusterfs_graph_attach (this->ctx->active,
- xlator_req.name);
+ xlator_req.name, &newgraph);
if (ret == 0) {
+ ret = glusterfs_graph_parent_up (newgraph);
+ if (ret) {
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ LG_MSG_EVENT_NOTIFY_FAILED,
+ "Parent up notification "
+ "failed");
+ goto out;
+ }
glusterfs_autoscale_threads (this->ctx, 1);
}
} else {
@@ -857,10 +867,11 @@ glusterfs_handle_attach (rpcsvc_request_t *req)
glusterfs_translator_info_response_send (req, ret, NULL, NULL);
+out:
free (xlator_req.input.input_val);
free (xlator_req.name);
- return 0;
+ return ret;
}
int
diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h
index 839a1d47d2a..bc379d6d1d7 100644
--- a/libglusterfs/src/glusterfs.h
+++ b/libglusterfs/src/glusterfs.h
@@ -581,7 +581,9 @@ int glusterfs_graph_init (glusterfs_graph_t *graph);
glusterfs_graph_t *glusterfs_graph_new (void);
int glusterfs_graph_reconfigure (glusterfs_graph_t *oldgraph,
glusterfs_graph_t *newgraph);
-int glusterfs_graph_attach (glusterfs_graph_t *orig_graph, char *path);
+int glusterfs_graph_attach (glusterfs_graph_t *orig_graph, char *path,
+ glusterfs_graph_t **newgraph);
+int glusterfs_graph_parent_up (glusterfs_graph_t *graph);
void
gf_free_mig_locks (lock_migration_info_t *locks);
diff --git a/libglusterfs/src/graph.c b/libglusterfs/src/graph.c
index 1edcf20eda6..33a773d28c3 100644
--- a/libglusterfs/src/graph.c
+++ b/libglusterfs/src/graph.c
@@ -1047,7 +1047,8 @@ out:
int
-glusterfs_graph_attach (glusterfs_graph_t *orig_graph, char *path)
+glusterfs_graph_attach (glusterfs_graph_t *orig_graph, char *path,
+ glusterfs_graph_t **newgraph)
{
xlator_t *this = THIS;
FILE *fp;
@@ -1084,7 +1085,7 @@ glusterfs_graph_attach (glusterfs_graph_t *orig_graph, char *path)
xl = FIRST_CHILD(xl);
}
graph->first = xl;
-
+ *newgraph = graph;
volfile_id = strstr (path, "/snaps/");
if (!volfile_id) {