From a00953ed212a7071b152c4afccd35b92fa5a682a Mon Sep 17 00:00:00 2001 From: Sanju Rakonde Date: Mon, 4 Mar 2019 16:53:01 +0530 Subject: core: make compute_cksum function op_version compatible Problem: commit 5a152a changed the mechansim of computing the checksum. In heterogeneous cluster, peers are running into rejected state because we have different cksum computation mechansims in upgraded and non-upgraded nodes. Solution: add a check for op-version so that all the nodes in the cluster follow the same mechanism for computing the cksum. fixes: bz#1684569 > Change-Id: I1508f000e8c9895588b6011b8b6cc0eda7102193 > BUG: bz#1685120 > Signed-off-by: Sanju Rakonde Change-Id: I1508f000e8c9895588b6011b8b6cc0eda7102193 Signed-off-by: Sanju Rakonde --- xlators/mgmt/glusterd/src/glusterd-utils.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'xlators') diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 9bb3bc4ba33..2a4ff542c13 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -2810,7 +2810,7 @@ glusterd_volume_compute_cksum(glusterd_volinfo_t *volinfo, char *cksum_path, cksum_path_final = is_quota_conf ? filepath : sort_filepath; - ret = get_checksum_for_path(cksum_path_final, &cksum); + ret = get_checksum_for_path(cksum_path_final, &cksum, priv->op_version); if (ret) { gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_CKSUM_GET_FAIL, "unable to get " @@ -2827,7 +2827,7 @@ glusterd_volume_compute_cksum(glusterd_volinfo_t *volinfo, char *cksum_path, } } - ret = get_checksum_for_file(fd, &cksum); + ret = get_checksum_for_file(fd, &cksum, priv->op_version); if (ret) goto out; @@ -9415,12 +9415,16 @@ glusterd_check_files_identical(char *filename1, char *filename2, uint32_t cksum1 = 0; uint32_t cksum2 = 0; xlator_t *this = NULL; + glusterd_conf_t *priv = NULL; GF_ASSERT(filename1); GF_ASSERT(filename2); GF_ASSERT(identical); this = THIS; + GF_VALIDATE_OR_GOTO("glusterd", this, out); + priv = this->private; + GF_VALIDATE_OR_GOTO(this->name, priv, out); ret = sys_stat(filename1, &buf1); @@ -9447,11 +9451,11 @@ glusterd_check_files_identical(char *filename1, char *filename2, goto out; } - ret = get_checksum_for_path(filename1, &cksum1); + ret = get_checksum_for_path(filename1, &cksum1, priv->op_version); if (ret) goto out; - ret = get_checksum_for_path(filename2, &cksum2); + ret = get_checksum_for_path(filename2, &cksum2, priv->op_version); if (ret) goto out; -- cgit