diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2015-01-05 16:21:52 +0530 |
---|---|---|
committer | Raghavendra Bhat <raghavendra@redhat.com> | 2015-02-04 03:53:33 -0800 |
commit | 92ab560f73299a1d5faf43a1a90516baa2ba275b (patch) | |
tree | d3340584d65067a5dd01a8538ab0d1ee9fd79170 /tests | |
parent | f397d7edb85c1e4b78c4cac176dc8a0afe8cf9a8 (diff) |
cluster/ec: Handle internal xattr get/set
Backport of http://review.gluster.org/9385
Problem:
Internal xattrs of EC like trusted.ec.size/config/version
can be modified by users and that can lead to misbehavior
in EC.
Fix:
Don't let the user modify the xattrs. Hide these xattrs
in getfattr outputs.
BUG: 1182490
Change-Id: Ie32ebb95ee67cabbb9488951097a517172b45bcf
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/9455
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra Bhat <raghavendra@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/basic/ec/ec-internal-xattrs.t | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/basic/ec/ec-internal-xattrs.t b/tests/basic/ec/ec-internal-xattrs.t new file mode 100644 index 00000000000..dabd3f1c7fd --- /dev/null +++ b/tests/basic/ec/ec-internal-xattrs.t @@ -0,0 +1,45 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +# This test checks internal xattr handling in ec +TESTS_EXPECTED_IN_LOOP=11 + +cleanup +function get_ec_xattrs +{ + getfattr -d -m. -e hex $1 | grep trusted.ec +} + +function get_xattr_count +{ + getfattr -d -m. -e hex $1 | grep "trusted" | wc -l +} + +declare -a xattrs=("trusted.ec.config" "trusted.ec.size" "trusted.ec.version" "trusted.ec.heal") + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 redundancy 2 $H0:$B0/${V0}{0..5} +TEST $CLI volume start $V0 +TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0; +# Wait until all 6 children have been recognized by the ec xlator +EXPECT_WITHIN $CHILD_UP_TIMEOUT "6" ec_child_up_count $V0 0 +TEST touch $M0/a + +#Check that internal xattrs are not modifiable or readable +for x in "${xattrs[@]}"; do + TEST_IN_LOOP ! setfattr -n $x "abc" $M0/a + TEST_IN_LOOP ! setfattr -x $x "abc" $M0/a + if [ $x != "trusted.ec.heal" ]; + then + TEST_IN_LOOP ! getfattr -n $x $M0/a + fi +done + +TEST ! get_ec_xattrs $M0/a +TEST setfattr -n trusted.abc -v 0x616263 $M0/a +EXPECT "616263" get_hex_xattr trusted.abc $M0/a +EXPECT "1" get_xattr_count $M0/a +cleanup |