diff options
| author | Varsha Rao <varao@redhat.com> | 2019-02-04 16:57:30 +0530 | 
|---|---|---|
| committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2019-02-04 16:08:13 +0000 | 
| commit | c8357d7ea049516b8e45d3d364246730f39363a0 (patch) | |
| tree | 8b83f91d0343b7d74a308dbdb587b4f0c3332330 /libglusterfs/src | |
| parent | 525abba58fb31df9e2d515b1ecf84f1345c78c25 (diff) | |
libglusterfs/common-utils.c: Fix buffer size for checksum computation
Problem: When quorum count option is updated, the change is not reflected in
the nfs-server.vol file. This is because in get_checksum_for_file(), when the
last part of the file read has size less than buffer size, the read buffer
stores old data value along with correct data value.
Solution: Pass the bytes read instead of fixed buffer size, for calculating
checksum.
Change-Id: I4b641607c8a262961b3f3da0028a54e08c3f8589
fixes: bz#1672248
Signed-off-by: Varsha Rao <varao@redhat.com>
Diffstat (limited to 'libglusterfs/src')
| -rw-r--r-- | libglusterfs/src/common-utils.c | 4 | 
1 files changed, 2 insertions, 2 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index aae9858fe22..bd3be7cfe12 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -1989,7 +1989,7 @@ gf_unlockfd(int fd)  }  static void -compute_checksum(char *buf, size_t size, uint32_t *checksum) +compute_checksum(char *buf, const ssize_t size, uint32_t *checksum)  {      int ret = -1;      char *checksum_buf = NULL; @@ -2032,7 +2032,7 @@ get_checksum_for_file(int fd, uint32_t *checksum)      do {          ret = sys_read(fd, &buf, GF_CHECKSUM_BUF_SIZE);          if (ret > 0) -            compute_checksum(buf, GF_CHECKSUM_BUF_SIZE, checksum); +            compute_checksum(buf, ret, checksum);      } while (ret > 0);      /* set it back */  | 
