mirror of
https://github.com/gluster/glusterfs.git
synced 2026-02-06 09:48:44 +01:00
Problem:
In a hyperconverged setup with granular-entry-heal enabled, if a file is
recreated while one of the bricks is down, and an index heal is triggered
(with the brick still down), entry-self heal was doing a spurious heal
with just the 2 good bricks. It was doing a post-op leading to removal
of the filename from .glusterfs/indices/entry-changes as well as
erroneous setting of afr xattrs on the parent. When the brick came up,
the xattrs were cleared, resulting in the renamed file not getting
healed and leading to gfid split-brain and EIO on the mount.
Fix:
Proceed with entry heal only when shd can connect to all bricks of the replica,
just like in data and metadata heal.
fixes: #1103
Change-Id: I916ae26ad1fabf259bc6362da52d433b7223b17e
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
(cherry picked from commit 06453d77d0)
Regression tests framework for GlusterFS
Prereq
- Build and install the version of glusterfs with your changes. Make sure the installed version is accessible from $PATH.
Prereq for geo-rep regression tests.
- Passwordless ssh on the test system to itself
- arequal-checksum installed on the test-system. You can find the repo here - https://github.com/raghavendrabhat/arequal
How-To
- To mount glusterfs, NEVER use 'mount -t glusterfs', instead use 'glusterfs -s ' method. This is because with the patch build setup doesnot install the /sbin/mount.glusterfs necessary, where as the glusterfs binary will be accessible with $PATH, and will pick the right version.
- (optional) Set environment variables to specify location of export directories and mount points. Unless you have special requirements, the defaults should just work. The variables themselves can be found at the top of tests/include.rc. All of them can be overriden with environment variables.
Usage
-
Execute
/usr/share/glusterfs/run-tests.shas root. -
If you want to run individual tests located in
/usr/share/glusterfs/testsas opposed to the full test-suite, invoke it as/usr/share/glusterfs/run-tests.sh [pattern]*, where pattern can be:- the trailing parts of the full path of a test,
e.g.
tests/basic/mount.t - the name of a file or directory, e.g
self-heal.torbasic/ - bug number, which will match against numbered bugs in the
tests/bugs/directory. - a glob pattern (see
man 7 globfor mor info on globs)
- the trailing parts of the full path of a test,
e.g.
-
To execute single ".t" file, use "prove -vf /path/to/.t"
-
If some test cases fail, report to GlusterFS community at
gluster-devel@gluster.org.
Reminder
- BE WARNED THAT THE TEST CASES DELETE
GLUSTERD_WORKDIR* !!!