1
0
mirror of https://github.com/gluster/glusterfs.git synced 2026-02-06 09:48:44 +01:00
Files
Ravishankar N 71de96a43c afr: prevent spurious entry heals leading to gfid split-brain
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)
2020-04-06 04:46:50 +00:00
..
2016-07-11 06:33:38 -07:00
2018-08-13 13:43:51 +00:00
2015-06-09 06:24:47 -07:00

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.

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.sh as root.

  • If you want to run individual tests located in /usr/share/glusterfs/tests as 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.t or basic/
    • bug number, which will match against numbered bugs in the tests/bugs/ directory.
    • a glob pattern (see man 7 glob for mor info on globs)
  • 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 * !!!