From 273a42a421a7deeb3cde9865cfe4bab4826fdb7f Mon Sep 17 00:00:00 2001 From: Pranith Kumar K Date: Fri, 1 Mar 2013 15:05:04 +0530 Subject: cluster/afr: Club missing entry, missing gfid self-heals Problem: gfid-self-heal always assigns the gfid(GFID-1) it gets from lookup. Between the time of lookup to triggering the gfid-self-heal the entry could have changed. Now lets say there is a case where one of the files of the replica subolumes already has a gfid (GFID-2) and the other does not. In that case healing should happen with GFID-2 instead of GFID-1. Fix: Missing-entry-self-heal already handles all these cases. So removed separate handling of gfid-self-heal. Change-Id: Ie96261e9036c8f3cb4cad89347f9bf7b681cdc1a BUG: 767585 Signed-off-by: Pranith Kumar K Reviewed-on: http://review.gluster.org/2670 Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- tests/bugs/bug-767585-gfid.t | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 tests/bugs/bug-767585-gfid.t (limited to 'tests/bugs/bug-767585-gfid.t') diff --git a/tests/bugs/bug-767585-gfid.t b/tests/bugs/bug-767585-gfid.t new file mode 100644 index 000000000..0cb6e3cb7 --- /dev/null +++ b/tests/bugs/bug-767585-gfid.t @@ -0,0 +1,42 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +#Test cases to perform gfid-self-heal +#file 'a' should be assigned a fresh gfid +#file 'b' should be healed with gfid1 from brick1 +#file 'c' should be healed with gfid2 from brick2 + +gfid1="0x8428b7193a764bf8be8046fb860b8993" +gfid2="0x85ad91afa2f74694bf52c3326d048209" + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}0 $H0:$B0/${V0}1 +TEST $CLI volume start $V0 +TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 --attribute-timeout=0 --entry-timeout=0 --direct-io-mode=enable +touch $B0/${V0}0/a $B0/${V0}1/a +touch $B0/${V0}0/b $B0/${V0}1/b +touch $B0/${V0}0/c $B0/${V0}1/c + +TEST setfattr -n trusted.gfid -v $gfid1 $B0/${V0}0/b +TEST setfattr -n trusted.gfid -v $gfid2 $B0/${V0}1/c + +cd $M0 +TEST ls -l a +TEST ls -l b +TEST ls -l c + +TEST gf_get_gfid_xattr $B0/${V0}0/a +TEST gf_get_gfid_xattr $B0/${V0}1/a + +EXPECT "$gfid1" gf_get_gfid_xattr $B0/${V0}0/b +EXPECT "$gfid1" gf_get_gfid_xattr $B0/${V0}1/b + +EXPECT "$gfid2" gf_get_gfid_xattr $B0/${V0}0/c +EXPECT "$gfid2" gf_get_gfid_xattr $B0/${V0}1/c + +cleanup; -- cgit