+++ This bug was initially created as a clone of Bug #1224600 +++ Description of problem: Currently triggering signing for a file (explicit signing by bitd) is based on overloading writev(). This is a bit dangerous and not clean. Better to move it to setxattr() path (with a special key identified by bitd and stub). Version-Release number of selected component (if applicable): mainline --- Additional comment from Anand Avati on 2015-05-27 07:57:29 EDT --- REVIEW: http://review.gluster.org/10942 (features/bitrot: stub improvements and fixes) posted (#1) for review on master by Venky Shankar (vshankar)
REVIEW: http://review.gluster.org/10953 (features/bitrot: stub improvements and fixes) posted (#1) for review on release-3.7 by Venky Shankar (vshankar)
COMMIT: http://review.gluster.org/10953 committed in release-3.7 by Venky Shankar (vshankar) ------ commit 5e1f8629b15568ca43587fbf2d97dafc4491defe Author: Venky Shankar <vshankar> Date: Tue May 26 21:51:31 2015 +0530 features/bitrot: stub improvements and fixes This patch refactors the signing trigger mechanism used by bitrot daemon as a "catch up" meachanism to sign files which _missed_ signing on the last run either due to bitrot being disabled and enabled again or if bitrot is enabled for a volume with existing data. Existing implementation relies on overloading writev() to trigger signing which just by the looks sounded dangerous and I hated it to the core. This change moves all that business to the setxattr interface thereby keeping the writev path strictly for client IO. Why not use IPC fop to trigger signing? There's a need to access the object's inode to perform various maintainance operations. inode is not _directly_ accessible in the IPC fop (although, it can be found via inode_grep() for the object's GFID - the inode just needs to be pinned in memory, which is the case if there's an active fd on the inode). This patch relies on good old technique of overloading fsetxattr() to do the job instead of using IPC fop. There are some pretty nice cleanups along the lines of memory deallocations, unncessary allocations and redundant ref()ing of structures (such as fd's) provided by this patch. All in all - much improved code navigation. Change-Id: Id93fe90b1618802d1a95a5072517dac342b96cb8 BUG: 1225709 Signed-off-by: Venky Shankar <vshankar> Reviewed-on: http://review.gluster.org/10953 Tested-by: Gluster Build System <jenkins.com> Tested-by: NetBSD Build System <jenkins.org>
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.1, please reopen this bug report. glusterfs-3.7.1 has been announced on the Gluster Packaging mailinglist [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution. [1] http://thread.gmane.org/gmane.comp.file-systems.gluster.packaging/1 [2] http://thread.gmane.org/gmane.comp.file-systems.gluster.user