From 1d554b179f63a5a56ae447f2a5b0044c49ae2642 Mon Sep 17 00:00:00 2001 From: Pranith Kumar K Date: Thu, 21 Nov 2013 16:17:32 +0530 Subject: cluster/afr: Provide HA for pathinfo getxattr Problem: afr_[f]getxattr_pathinfo_cbks fail the fop even when it succeeded on one of the bricks. This can happen if the last response to pathinfo [f]getxattr is a failure. Fix: Remember if any of the [f]getxattr_pathinfos are successful and send that as the op_ret/op_errno value to the xlators above. Note: Winding fop to a client xlator that is not connected to server produces an error log. Preventing that by not even winding fop when client xlator is DOWN. Change-Id: I846e8c47423ffcfa2eabffe8924534781a36841a BUG: 1032927 Signed-off-by: Pranith Kumar K Reviewed-on: http://review.gluster.org/6332 Reviewed-by: Vijay Bellur Tested-by: Gluster Build System --- tests/bugs/bug-1032927.t | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/bugs/bug-1032927.t (limited to 'tests/bugs/bug-1032927.t') diff --git a/tests/bugs/bug-1032927.t b/tests/bugs/bug-1032927.t new file mode 100644 index 00000000000..2106f3d5bfe --- /dev/null +++ b/tests/bugs/bug-1032927.t @@ -0,0 +1,32 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +#This tests if pathinfo getxattr fails when one of the bricks is down +#Lets hope it doesn't + +cleanup; +function get_pathinfo_in_loop { + failed=0 + for i in {1..1000} + do + getfattr -n trusted.glusterfs.pathinfo $M0 2>/dev/null + if [ $? -ne 0 ]; then failed=1;break; fi + done + return $failed +} + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{0,1} +TEST $CLI volume start $V0 +TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 --attribute-timeout=0 --entry-timeout=0 +cd $M0 +TEST kill_brick $V0 $H0 $B0/${V0}1 + +#when one of the bricks is down getfattr of pathinfo should not fail +#Lets just do the test for 1000 times to see if we hit the race +TEST get_pathinfo_in_loop + +cleanup -- cgit