diff options
| author | Pranith K <pranithk@gluster.com> | 2011-03-07 07:23:51 +0000 | 
|---|---|---|
| committer | Anand V. Avati <avati@dev.gluster.com> | 2011-03-07 08:01:22 -0800 | 
| commit | 7ef59472f10a69c90d94b73e97bca385c6b4b29e (patch) | |
| tree | b3d41e327f769e7256492a66edbfa7da5d5164c8 /xlators/mgmt/glusterd/src/glusterd-rpc-ops.c | |
| parent | f3dc620caaa7068ff12323a0001075140624733c (diff) | |
mgmt/glusterd: preserve delete volume payload structure for backward compatibility
Signed-off-by: Pranith Kumar K <pranithk@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 2494 ([glusterfs-3.1.3qa4]: replace brick and delete volume fails)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2494
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-rpc-ops.c')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-rpc-ops.c | 42 | 
1 files changed, 30 insertions, 12 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c index fe97183c4af..e7134c990b7 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c @@ -1298,6 +1298,7 @@ glusterd3_1_stage_op (call_frame_t *frame, xlator_t *this,          glusterd_conf_t                 *priv = NULL;          call_frame_t                    *dummy_frame = NULL;          dict_t                          *dict = NULL; +        gf_boolean_t                    is_alloc = _gf_true;          if (!this) {                  goto out; @@ -1315,15 +1316,23 @@ glusterd3_1_stage_op (call_frame_t *frame, xlator_t *this,          //peerinfo should not be in payload          dict_del (dict, "peerinfo"); -        ret = dict_allocate_and_serialize (dict, &req.buf.buf_val, -                                           (size_t *)&req.buf.buf_len); - -        if (ret) -                goto out; -          glusterd_get_uuid (&req.uuid);          req.op = glusterd_op_get_op (); +        if (GD_OP_DELETE_VOLUME == req.op) { +                ret = dict_get_str (dict, "volname", &req.buf.buf_val); +                if (ret) +                        goto out; +                req.buf.buf_len = strlen (req.buf.buf_val); +                is_alloc = _gf_false; +        } else { +                ret = dict_allocate_and_serialize (dict, &req.buf.buf_val, +                                                   (size_t *)&req.buf.buf_len); + +                if (ret) +                        goto out; +        } +          dummy_frame = create_frame (this, this->ctx->pool);          if (!dummy_frame)                  goto out; @@ -1335,7 +1344,7 @@ glusterd3_1_stage_op (call_frame_t *frame, xlator_t *this,                                         this, glusterd3_1_stage_op_cbk);  out: -        if (req.buf.buf_val) +        if ((_gf_true == is_alloc) && req.buf.buf_val)                  GF_FREE (req.buf.buf_val);          gf_log ("glusterd", GF_LOG_DEBUG, "Returning %d", ret); @@ -1352,6 +1361,7 @@ glusterd3_1_commit_op (call_frame_t *frame, xlator_t *this,          glusterd_conf_t        *priv        = NULL;          call_frame_t           *dummy_frame = NULL;          dict_t                 *dict        = NULL; +        gf_boolean_t            is_alloc    = _gf_true;          if (!this) {                  goto out; @@ -1371,11 +1381,19 @@ glusterd3_1_commit_op (call_frame_t *frame, xlator_t *this,          glusterd_get_uuid (&req.uuid);          req.op = glusterd_op_get_op (); -        ret = dict_allocate_and_serialize (dict, &req.buf.buf_val, -                                           (size_t *)&req.buf.buf_len); +        if (GD_OP_DELETE_VOLUME == req.op) { +                ret = dict_get_str (dict, "volname", &req.buf.buf_val); +                if (ret) +                        goto out; +                req.buf.buf_len = strlen (req.buf.buf_val); +                is_alloc = _gf_false; +        } else { +                ret = dict_allocate_and_serialize (dict, &req.buf.buf_val, +                                                   (size_t *)&req.buf.buf_len); -        if (ret) -                goto out; +                if (ret) +                        goto out; +        }          dummy_frame = create_frame (this, this->ctx->pool);          if (!dummy_frame) @@ -1388,7 +1406,7 @@ glusterd3_1_commit_op (call_frame_t *frame, xlator_t *this,                                         this, glusterd3_1_commit_op_cbk);  out: -        if (req.buf.buf_val) +        if ((_gf_true == is_alloc) && req.buf.buf_val)                  GF_FREE (req.buf.buf_val);          gf_log ("glusterd", GF_LOG_DEBUG, "Returning %d", ret);  | 
