diff options
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-handler.c')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 56 | 
1 files changed, 56 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index c1ab571197b..8fe0b31a6cb 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -816,6 +816,44 @@ out:  }  int +glusterd_handle_remove_brick (rpcsvc_request_t *req) +{ +        int32_t                         ret = -1; +        gf1_cli_remove_brick_req        cli_req = {0,}; +        dict_t                          *dict = NULL; + +        GF_ASSERT (req); + +        if (!gf_xdr_to_cli_remove_brick_req (req->msg[0], &cli_req)) { +                //failed to decode msg; +                req->rpc_err = GARBAGE_ARGS; +                goto out; +        } + +        gf_log ("glusterd", GF_LOG_NORMAL, "Received rem brick req"); + +        if (cli_req.bricks.bricks_len) { +                /* Unserialize the dictionary */ +                dict  = dict_new (); + +                ret = dict_unserialize (cli_req.bricks.bricks_val, +                                        cli_req.bricks.bricks_len, +                                        &dict); +                if (ret < 0) { +                        gf_log ("glusterd", GF_LOG_ERROR, +                                "failed to " +                                "unserialize req-buffer to dictionary"); +                        goto out; +                } +        } + +        ret = glusterd_remove_brick (req, dict); + +out: +        return ret; +} + +int  glusterd_op_lock_send_resp (rpcsvc_request_t *req, int32_t status)  { @@ -1587,6 +1625,24 @@ glusterd_add_brick (rpcsvc_request_t *req, dict_t *dict)  }  int32_t +glusterd_remove_brick (rpcsvc_request_t *req, dict_t *dict) +{ +        int32_t      ret       = -1; + +        GF_ASSERT (req); +        GF_ASSERT (dict); + +        glusterd_op_set_op (GD_OP_REMOVE_BRICK); + +        glusterd_op_set_ctx (GD_OP_REMOVE_BRICK, dict); +        glusterd_op_set_req (req); + +        ret = glusterd_op_txn_begin (); + +        return ret; +} + +int32_t  glusterd_list_friends (rpcsvc_request_t *req, dict_t *dict, int32_t flags)  {          int32_t                 ret = -1;  | 
