diff options
author | Venky Shankar <vshankar@redhat.com> | 2013-03-09 16:36:56 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2013-04-02 10:29:38 -0700 |
commit | af939370ad20fe1be8e52ea953996e190e86c4ee (patch) | |
tree | 7b9091a8dbf9327c009314fae3b037e3cc729731 /tests/bugs | |
parent | 864ac6b7b3d69b5f2cc0fafe4b12d861da3a633c (diff) |
cluster/afr: sync xattrs removed on source to sink(s)
xattrs are first removed from sink followed by setting
source xattrs.
Change-Id: I181cb5b785b667bbfc6e40787a2183a8f45de06b
BUG: 906646
Signed-off-by: Venky Shankar <vshankar@redhat.com>
Reviewed-on: http://review.gluster.org/4656
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'tests/bugs')
-rw-r--r-- | tests/bugs/bug-906646.t | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/bugs/bug-906646.t b/tests/bugs/bug-906646.t new file mode 100644 index 00000000000..0e6a3bcb695 --- /dev/null +++ b/tests/bugs/bug-906646.t @@ -0,0 +1,93 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +REPLICA=2 + +TEST glusterd +TEST pidof glusterd + +TEST $CLI volume create $V0 replica $REPLICA $H0:$B0/${V0}-00 $H0:$B0/${V0}-01 $H0:$B0/${V0}-10 $H0:$B0/${V0}-11 +TEST $CLI volume start $V0 + +TEST $CLI volume set $V0 cluster.self-heal-daemon off +TEST $CLI volume set $V0 cluster.background-self-heal-count 0 + +## Mount FUSE with caching disabled +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 $M0; + +function xattr_query_check() +{ + local path=$1 + local xa_name=$2 + + local ret=`getfattr -m . -n $xa_name $path 2>&1 | grep -o "$xa_name: No such attribute" | wc -l` + echo $ret +} + +function set_xattr() +{ + local path=$1 + local xa_name=$2 + local xa_val=$3 + + setfattr -n $xa_name -v $xa_val $path + echo $? +} + +function remove_xattr() +{ + local path=$1 + local xa_name=$2 + + setfattr -x $xa_name $path + echo $? +} + +f=f00f +pth=$M0/$f + +touch $pth + +# fetch backend paths +backend_paths=`get_backend_paths $pth` + +# convert it into and array +backend_paths_array=($backend_paths) + +# setxattr xattr for this file +EXPECT 0 set_xattr $pth "trusted.name" "test" + +# confirm the set on backend +EXPECT 0 xattr_query_check ${backend_paths_array[0]} "trusted.name" +EXPECT 0 xattr_query_check ${backend_paths_array[1]} "trusted.name" + +brick_path=`echo ${backend_paths_array[0]} | sed -n 's/\(.*\)\/'$f'/\1/p'` +brick_id=`$CLI volume info $V0 | grep "Brick[[:digit:]]" | grep -n $brick_path | cut -f1 -d:` + +# Kill a brick process +TEST kill_brick $V0 $H0 $brick_path + +# remove the xattr from the mount point +EXPECT 0 remove_xattr $pth "trusted.name" + +# we killed ${backend_paths[0]} - so expect the xattr to be there +# on the backend there +EXPECT 0 xattr_query_check ${backend_paths_array[0]} "trusted.name" +EXPECT 1 xattr_query_check ${backend_paths_array[1]} "trusted.name" + +# restart the brick process +TEST $CLI volume start $V0 force + +EXPECT_WITHIN 20 "1" afr_child_up_status $V0 `expr $brick_id - 1` + +stat $pth + +# check backends - xattr should not be present anywhere +EXPECT 1 xattr_query_check ${backend_paths_array[0]} "trusted.name" +EXPECT 1 xattr_query_check ${backend_paths_array[1]} "trusted.name" + +cleanup; |