From e9bfe11475c715e431d005087a0fa0fb66aef033 Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Tue, 5 Mar 2019 08:39:16 +0530 Subject: dict: handle STR_OLD data type in xdr conversions Currently a dict conversion on wire for 3.x protocol happens using `dict_unserialize()`, which sets the type of data as STR_OLD. But the new protocol doesn't send it over the wire as its not considered as a valid format in new processes. But considering we deal with old and new protocol when we do a rolling upgrade, it will allow us to get all the information properly with new protocol. Credits: Krutika Dhananjay Fixes: bz#1684385 Change-Id: I165c0021fb195b399790b9cf14a7416ae75ec84f Signed-off-by: Amar Tumballi --- rpc/xdr/src/glusterfs3.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'rpc/xdr/src/glusterfs3.h') diff --git a/rpc/xdr/src/glusterfs3.h b/rpc/xdr/src/glusterfs3.h index 0de7cb8abf5..5521f4d4eca 100644 --- a/rpc/xdr/src/glusterfs3.h +++ b/rpc/xdr/src/glusterfs3.h @@ -728,6 +728,7 @@ dict_to_xdr(dict_t *this, gfx_dict *dict) break; case GF_DATA_TYPE_PTR: + case GF_DATA_TYPE_STR_OLD: index++; /* Ideally, each type of data stored in dictionary should have type. A pointer type shouldn't be @@ -854,6 +855,7 @@ xdr_to_dict(gfx_dict *dict, dict_t **to) ret = dict_set_iatt(this, key, iatt, false); break; case GF_DATA_TYPE_PTR: + case GF_DATA_TYPE_STR_OLD: value = GF_MALLOC(xpair->value.gfx_value_u.other.other_len + 1, gf_common_mt_char); if (!value) { -- cgit