Description of problem:
once file is signed with proper hash value by bitd, modify file in backend but scrubber was unable to detect changes and didn't mark file as 'BAD'
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. create and mount gluster volume.
2. Enable bitrot and create files.
3. Once files have been signed go to bricks and modify file from backend.
scrubber is failed to detect checksum mismatch. no xattr set and log doesnt have any error reported for the same
Scrubber should mark file as 'BAD' in case of checksum mismtach
REVIEW: http://review.gluster.org/10118 (bitrot/scrub: Scrubber fixes) posted (#1) for review on master by Venky Shankar (firstname.lastname@example.org)
REVIEW: http://review.gluster.org/10118 (bitrot/scrub: Scrubber fixes) posted (#2) for review on master by Venky Shankar (email@example.com)
REVIEW: http://review.gluster.org/10118 (bitrot/scrub: Scrubber fixes) posted (#3) for review on master by Venky Shankar (firstname.lastname@example.org)
REVIEW: http://review.gluster.org/10118 (bitrot/scrub: Scrubber fixes) posted (#4) for review on master by Venky Shankar (email@example.com)
COMMIT: http://review.gluster.org/10118 committed in master by Vijay Bellur (firstname.lastname@example.org)
Author: Venky Shankar <email@example.com>
Date: Tue Mar 31 15:48:18 2015 +0530
bitrot/scrub: Scrubber fixes
This patch fixes a handful of problem with scrubber which
are detailed below.
Scrubber used to skip objects for verification due to missing
fd iterface to fetch versioning extended attributes. Similar
to the inode interface, an fd based interface in POSIX is now
Moreover, this patch also fixes potential false reporting by
scrubber due to:
An object gets dirtied and signed when scrubber is busy
calculatingobject checksum. This is fixed by caching the
signed version when an object is first inspected for
stalenes, i.e., during pre-compute stage. This version is
used to verify checksum in the post-compute stage when the
signatures are compared for possible corruption.
Side effect of _not_ sending signature length during signing
resulted in "truncated" signature to be set for an object.
Now, at the time of signing, the signature length is sent
and is used in place of invoking strlen() to get signature
length (which could have possible 00s). The signature length
itself is not persisted in the signature xattr, but is
calculated on-the-fly by substracting the xattr length by
the "structure" header size.
Some of the log entries are made more meaningful (as and aid
Signed-off-by: Venky Shankar <firstname.lastname@example.org>
Reviewed-by: Raghavendra Bhat <email@example.com>
Tested-by: Gluster Build System <firstname.lastname@example.org>
Reviewed-by: Vijay Bellur <email@example.com>
REVIEW: http://review.gluster.org/10162 (test/bitrot-stub: fix spurious devrpm build failure) posted (#1) for review on master by Gaurav Kumar Garg (firstname.lastname@example.org)
Patch in comment 6 abandoned
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.7.0, please open a new bug report.
glusterfs-3.7.0 has been announced on the Gluster mailinglists , packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist  and the update infrastructure for your distribution.