diff options
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-rpc-ops.c')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-rpc-ops.c | 106 | 
1 files changed, 96 insertions, 10 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c index 1249728576f..01fb7777558 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c @@ -185,7 +185,21 @@ glusterd_op_send_cli_response (glusterd_op_t op, int32_t op_ret,  }  int -glusterd_probe_cbk (struct rpc_req *req, struct iovec *iov, +glusterd_big_locked_cbk (struct rpc_req *req, struct iovec *iov, +                         int count, void *myframe, fop_cbk_fn_t fn) +{ +        glusterd_conf_t *priv = THIS->private; +        int             ret   = -1; + +        synclock_lock (&priv->big_lock); +        ret = fn (req, iov, count, myframe); +        synclock_unlock (&priv->big_lock); + +        return ret; +} + +int +__glusterd_probe_cbk (struct rpc_req *req, struct iovec *iov,                          int count, void *myframe)  {          gd1_mgmt_probe_rsp    rsp   = {{0},}; @@ -287,7 +301,16 @@ out:  }  int -glusterd_friend_add_cbk (struct rpc_req * req, struct iovec *iov, +glusterd_probe_cbk (struct rpc_req *req, struct iovec *iov, +                    int count, void *myframe) +{ +        return glusterd_big_locked_cbk (req, iov, count, myframe, +                                        __glusterd_probe_cbk); +} + + +int +__glusterd_friend_add_cbk (struct rpc_req * req, struct iovec *iov,                              int count, void *myframe)  {          gd1_mgmt_friend_rsp           rsp   = {{0},}; @@ -380,7 +403,15 @@ out:  }  int -glusterd_friend_remove_cbk (struct rpc_req * req, struct iovec *iov, +glusterd_friend_add_cbk (struct rpc_req *req, struct iovec *iov, +                    int count, void *myframe) +{ +        return glusterd_big_locked_cbk (req, iov, count, myframe, +                                        __glusterd_friend_add_cbk); +} + +int +__glusterd_friend_remove_cbk (struct rpc_req * req, struct iovec *iov,                                 int count, void *myframe)  {          gd1_mgmt_friend_rsp             rsp   = {{0},}; @@ -473,8 +504,16 @@ respond:          return ret;  } +int +glusterd_friend_remove_cbk (struct rpc_req *req, struct iovec *iov, +                    int count, void *myframe) +{ +        return glusterd_big_locked_cbk (req, iov, count, myframe, +                                        __glusterd_friend_remove_cbk); +} +  int32_t -glusterd_friend_update_cbk (struct rpc_req *req, struct iovec *iov, +__glusterd_friend_update_cbk (struct rpc_req *req, struct iovec *iov,                                int count, void *myframe)  {          int                           ret    = -1; @@ -506,8 +545,16 @@ out:          return ret;  } +int +glusterd_friend_update_cbk (struct rpc_req *req, struct iovec *iov, +                    int count, void *myframe) +{ +        return glusterd_big_locked_cbk (req, iov, count, myframe, +                                        __glusterd_friend_update_cbk); +} +  int32_t -glusterd_cluster_lock_cbk (struct rpc_req *req, struct iovec *iov, +__glusterd_cluster_lock_cbk (struct rpc_req *req, struct iovec *iov,                                int count, void *myframe)  {          gd1_mgmt_cluster_lock_rsp     rsp   = {{0},}; @@ -572,7 +619,15 @@ out:  }  int32_t -glusterd_cluster_unlock_cbk (struct rpc_req *req, struct iovec *iov, +glusterd_cluster_lock_cbk (struct rpc_req *req, struct iovec *iov, +                              int count, void *myframe) +{ +        return glusterd_big_locked_cbk (req, iov, count, myframe, +                                        __glusterd_cluster_lock_cbk); +} + +int32_t +__glusterd_cluster_unlock_cbk (struct rpc_req *req, struct iovec *iov,                                   int count, void *myframe)  {          gd1_mgmt_cluster_lock_rsp     rsp   = {{0},}; @@ -634,7 +689,15 @@ out:  }  int32_t -glusterd_stage_op_cbk (struct rpc_req *req, struct iovec *iov, +glusterd_cluster_unlock_cbk (struct rpc_req *req, struct iovec *iov, +                                 int count, void *myframe) +{ +        return glusterd_big_locked_cbk (req, iov, count, myframe, +                                        __glusterd_cluster_unlock_cbk); +} + +int32_t +__glusterd_stage_op_cbk (struct rpc_req *req, struct iovec *iov,                            int count, void *myframe)  {          gd1_mgmt_stage_op_rsp         rsp   = {{0},}; @@ -753,7 +816,15 @@ out:  }  int32_t -glusterd_commit_op_cbk (struct rpc_req *req, struct iovec *iov, +glusterd_stage_op_cbk (struct rpc_req *req, struct iovec *iov, +                          int count, void *myframe) +{ +        return glusterd_big_locked_cbk (req, iov, count, myframe, +                                        __glusterd_stage_op_cbk); +} + +int32_t +__glusterd_commit_op_cbk (struct rpc_req *req, struct iovec *iov,                            int count, void *myframe)  {          gd1_mgmt_commit_op_rsp         rsp   = {{0},}; @@ -911,7 +982,13 @@ out:          return ret;  } - +int32_t +glusterd_commit_op_cbk (struct rpc_req *req, struct iovec *iov, +                          int count, void *myframe) +{ +        return glusterd_big_locked_cbk (req, iov, count, myframe, +                                        __glusterd_commit_op_cbk); +}  int32_t  glusterd_rpc_probe (call_frame_t *frame, xlator_t *this, @@ -1276,7 +1353,7 @@ out:  }  int32_t -glusterd_brick_op_cbk (struct rpc_req *req, struct iovec *iov, +__glusterd_brick_op_cbk (struct rpc_req *req, struct iovec *iov,                            int count, void *myframe)  {          gd1_mgmt_brick_op_rsp         rsp   = {0}; @@ -1378,6 +1455,14 @@ out:  }  int32_t +glusterd_brick_op_cbk (struct rpc_req *req, struct iovec *iov, +                          int count, void *myframe) +{ +        return glusterd_big_locked_cbk (req, iov, count, myframe, +                                        __glusterd_brick_op_cbk); +} + +int32_t  glusterd_brick_op (call_frame_t *frame, xlator_t *this,                        void *data)  { @@ -1542,3 +1627,4 @@ struct rpc_clnt_program gd_peer_prog = {          .numproc   = GLUSTERD_FRIEND_MAXVALUE,  }; +  | 
