diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2016-02-27 23:08:06 +0530 |
---|---|---|
committer | Kaushal M <kaushal@redhat.com> | 2016-04-12 04:57:36 -0700 |
commit | e1396f078aec7dee9007f35c074a90391bdaf64f (patch) | |
tree | 0e621abe9b4a8fd0f51c585a3e13704b394ff42b /tests/basic | |
parent | c9c2c08d34003f49bc3a509757a135665fb20518 (diff) |
cluster/afr: Don't delete gfid-req from lookup request
Problem:
Afr does dict_ref of the xattr_req that comes to it and deletes "gfid-req" key.
Dht uses same dict to send lookup to other subvolumes. So in case of
directories and more than 1 dht subvolumes, second subvolume till the last
subvolume won't get a lookup request with "gfid-req". So gfid reset never
happens on the directories in distributed replicate subvolume for 2nd till last
subvolumes.
Fix:
Make a copy of lookup xattr request.
Also fixed replies_wipe possibly resetting gfid to NULL gfid
>BUG: 1312816
>Change-Id: Ic16260e5a4664837d069c1dc05b9e96ca05bda88
>Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
>Reviewed-on: http://review.gluster.org/13545
>Smoke: Gluster Build System <jenkins@build.gluster.com>
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
>CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
>Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
>(cherry picked from commit 9b022c3a3f2f774904b5b458ae065425b46cc15d)
Change-Id: Ia68193b559ec1dfd841cc5a22ef1fa801b866200
BUG: 1313693
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/13574
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Smoke: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'tests/basic')
-rw-r--r-- | tests/basic/afr/gfid-heal.t | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/basic/afr/gfid-heal.t b/tests/basic/afr/gfid-heal.t new file mode 100644 index 00000000000..e570f3d5951 --- /dev/null +++ b/tests/basic/afr/gfid-heal.t @@ -0,0 +1,20 @@ +#!/bin/bash +#gfid self-heal test on distributed replica. Make sure all the gfids are same +#and the gfid exists on all the bricks + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 replica 2 $H0:$B0/brick{0,1,2,3} +TEST $CLI volume start $V0 +TEST $GFS --volfile-id=$V0 --volfile-server=$H0 $M0; + +TEST mkdir $B0/brick{0,1,2,3}/d +sleep 2 #to prevent is_fresh_file code path +TEST stat $M0/d +gfid_count=$(getfattr -d -m. -e hex $B0/brick{0,1,2,3}/d 2>&1 | grep trusted.gfid | wc -l) +EXPECT 4 echo $gfid_count +cleanup; |