diff options
| author | Sanju Rakonde <srakonde@redhat.com> | 2019-03-04 16:53:01 +0530 | 
|---|---|---|
| committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2019-03-11 00:31:01 +0000 | 
| commit | a00953ed212a7071b152c4afccd35b92fa5a682a (patch) | |
| tree | 9f4c970bb3cf736000d4c34159b9980e1dc6c5fe /xlators/mgmt/glusterd/src/glusterd-utils.c | |
| parent | 8fb4631c65f28dd0a5e0304386efff3c807e64a4 (diff) | |
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 <srakonde@redhat.com>
Change-Id: I1508f000e8c9895588b6011b8b6cc0eda7102193
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 12 | 
1 files changed, 8 insertions, 4 deletions
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;  | 
