diff options
-rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 15 | ||||
-rw-r--r-- | libglusterfs/src/glusterfs.h | 4 | ||||
-rw-r--r-- | libglusterfs/src/graph.c | 5 |
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) { |