From 72e83f9b52b5ed4bbeed1cc1163dc8392ccf6b05 Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Thu, 25 Jun 2009 16:11:44 +0000 Subject: version check between client/server made more specific to protocol only. This patch is a step towards giving compatibility between the versions of GlusterFS. Now onwards, the protocol-version won't depend on release versions. In general, multiple glusterfs versions can have common protocol-version. Signed-off-by: Anand V. Avati --- libglusterfs/src/protocol.h | 5 +++++ xlators/protocol/client/src/client-protocol.c | 10 +++++----- xlators/protocol/server/src/server-protocol.c | 8 ++++---- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/libglusterfs/src/protocol.h b/libglusterfs/src/protocol.h index 4bb379b2f9b..0f93a993aa0 100644 --- a/libglusterfs/src/protocol.h +++ b/libglusterfs/src/protocol.h @@ -35,6 +35,11 @@ #include "byte-order.h" +/* Any changes in the protocol structure or adding new '[f,m]ops' needs to + * bump the protocol version by "0.1" + */ +/* Protocol version 1.0 was ASCII based dictionary protocol */ +#define GF_PROTOCOL_VERSION "2.0" struct gf_stat { uint64_t ino; diff --git a/xlators/protocol/client/src/client-protocol.c b/xlators/protocol/client/src/client-protocol.c index 59b2e1d0b40..2be00f69bd4 100644 --- a/xlators/protocol/client/src/client-protocol.c +++ b/xlators/protocol/client/src/client-protocol.c @@ -6060,11 +6060,11 @@ protocol_client_handshake (xlator_t *this, transport_t *trans) char *process_uuid_xl; options = this->options; - ret = dict_set_str (options, "version", PACKAGE_VERSION); + ret = dict_set_str (options, "protocol-version", GF_PROTOCOL_VERSION); if (ret < 0) { gf_log (this->name, GF_LOG_DEBUG, - "failed to set version(%s) in options dictionary", - PACKAGE_VERSION); + "failed to set protocol version(%s) in handshake msg", + GF_PROTOCOL_VERSION); } asprintf (&process_uuid_xl, "%s-%s", this->ctx->process_uuid, @@ -6073,8 +6073,8 @@ protocol_client_handshake (xlator_t *this, transport_t *trans) process_uuid_xl); if (ret < 0) { gf_log (this->name, GF_LOG_DEBUG, - "failed to set process-uuid(%s) in options dictionary", - PACKAGE_VERSION); + "failed to set process-uuid(%s) in handshake msg", + process_uuid_xl); } if (this->ctx->cmd_args.volfile_server) { diff --git a/xlators/protocol/server/src/server-protocol.c b/xlators/protocol/server/src/server-protocol.c index ee79893ffdb..47a3b4b47cf 100644 --- a/xlators/protocol/server/src/server-protocol.c +++ b/xlators/protocol/server/src/server-protocol.c @@ -6955,7 +6955,7 @@ mop_setvolume (call_frame_t *frame, xlator_t *bound_xl, if (trans->xl_private != conn) trans->xl_private = conn; - ret = dict_get_str (params, "version", &version); + ret = dict_get_str (params, "protocol-version", &version); if (ret < 0) { ret = dict_set_str (reply, "ERROR", "No version number specified"); @@ -6968,11 +6968,11 @@ mop_setvolume (call_frame_t *frame, xlator_t *bound_xl, goto fail; } - ret = strcmp (version, PACKAGE_VERSION); + ret = strcmp (version, GF_PROTOCOL_VERSION); if (ret != 0) { asprintf (&msg, - "Version mismatch: client(%s) Vs server (%s)", - version, PACKAGE_VERSION); + "protocol version mismatch: client(%s) - server(%s)", + version, GF_PROTOCOL_VERSION); ret = dict_set_dynstr (reply, "ERROR", msg); if (ret < 0) gf_log (trans->xl->name, GF_LOG_DEBUG, -- cgit