From 8bdc329e892f35ca19dfd07b542aa81afd855fce Mon Sep 17 00:00:00 2001 From: Anand Avati Date: Tue, 10 Dec 2013 14:28:22 -0800 Subject: posix: if brick-uid or brick-gid is not specified, do not set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Current code would set owner uid/gid explicitly to 0/0 on start even if none was specified. Fix it. Change-Id: I72dec9e79c51bd1eb3af5334c42b7c23b01d0258 BUG: 1040275 Signed-off-by: Anand Avati Reviewed-on: http://review.gluster.org/6476 Tested-by: Gluster Build System Tested-by: Lukáš Bezdička Reviewed-by: Krishnan Parthasarathi Reviewed-by: Vijay Bellur --- tests/bugs/brick-uid-reset-on-volume-restart.t | 47 ++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 tests/bugs/brick-uid-reset-on-volume-restart.t (limited to 'tests') diff --git a/tests/bugs/brick-uid-reset-on-volume-restart.t b/tests/bugs/brick-uid-reset-on-volume-restart.t new file mode 100755 index 000000000..99629733f --- /dev/null +++ b/tests/bugs/brick-uid-reset-on-volume-restart.t @@ -0,0 +1,47 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +function get_uid() { + stat -c '%u' $1; +} + +function get_gid() { + stat -c '%g' $1; +} + + +cleanup; + +TEST glusterd +TEST pidof glusterd + +TEST $CLI volume create $V0 replica 2 stripe 2 $H0:$B0/${V0}{1,2,3,4,5,6,7,8}; + +EXPECT "$V0" volinfo_field $V0 'Volume Name'; +EXPECT 'Created' volinfo_field $V0 'Status'; +EXPECT '8' brick_count $V0 + +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +TEST glusterfs -s $H0 --volfile-id $V0 $M0; + +EXPECT 0 get_uid $M0; +EXPECT 0 get_gid $M0; + +TEST chown 100:101 $M0; + +EXPECT 100 get_uid $M0; +EXPECT 101 get_gid $M0; + +TEST $CLI volume stop $V0; +TEST $CLI volume start $V0; + +sleep 10; + +EXPECT 100 get_uid $M0; +EXPECT 101 get_gid $M0; + +cleanup; -- cgit From 7fc2499db89e385332f09fb06c10cb524f761875 Mon Sep 17 00:00:00 2001 From: Ravishankar N Date: Wed, 11 Dec 2013 17:30:13 +0530 Subject: glusterd: fix error in remove-brick-replica validation Problem: Reducing replica count of a volume using remove-brick command fails if bricks are specified in a random order. Fix: Modify subvol_matcher_verify() to permit order agnostic replica count reduction. Change-Id: I1f3d33e82a70d9b69c297f69c4c1b847937d1031 BUG: 1040408 Signed-off-by: Ravishankar N Reviewed-on: http://review.gluster.org/6489 Reviewed-by: Krishnan Parthasarathi Tested-by: Gluster Build System --- tests/bugs/bug-1040408.t | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tests/bugs/bug-1040408.t (limited to 'tests') diff --git a/tests/bugs/bug-1040408.t b/tests/bugs/bug-1040408.t new file mode 100644 index 000000000..2982d6a81 --- /dev/null +++ b/tests/bugs/bug-1040408.t @@ -0,0 +1,31 @@ +#!/bin/bash + +#Test case: Create a distributed replicate volume, and reduce +#replica count + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +#Basic checks +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info + +#Create a 2X3 distributed-replicate volume +TEST $CLI volume create $V0 replica 3 $H0:$B0/${V0}{1..6}; +TEST $CLI volume start $V0 + +# Reduce to 2x2 volume by specifying bricks in reverse order +function remove_brick_status { + $CLI volume remove-brick $V0 replica 2 \ + $H0:$B0/${V0}6 $H0:$B0/${V0}3 force 2>&1 |grep -oE "success|failed" +} +EXPECT "success" remove_brick_status; + +TEST $CLI volume stop $V0 +TEST $CLI volume delete $V0; +TEST ! $CLI volume info $V0; + +cleanup; -- cgit From 3991b0d0e934214882c064a0b720375af5c1575a Mon Sep 17 00:00:00 2001 From: Venkatesh Somyajulu Date: Thu, 19 Dec 2013 18:11:38 +0530 Subject: cluster/afr: For entry self heal, mark all source bricks Problem: Whenever a new brick is added into a replicate volume, all source bricks are not marked as source. Only one of them is marked as source. Here marked as source refers to adding extended attribute at the backend of a file corresponding to the newly added brick. As well as source bricks should point to the newly added brick so that heal can be triggered. Fix: All source bricks will now point to newly added bricks and heal can be triggered based on the extended attributes. Change-Id: I318e1f779a380c16c448a2d05c0140d8e4647fd4 BUG: 1037501 Signed-off-by: Venkatesh Somyajulu Reviewed-on: http://review.gluster.org/6540 Reviewed-by: Pranith Kumar Karampuri Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- tests/bugs/bug-1037501.t | 220 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100755 tests/bugs/bug-1037501.t (limited to 'tests') diff --git a/tests/bugs/bug-1037501.t b/tests/bugs/bug-1037501.t new file mode 100755 index 000000000..5470d0563 --- /dev/null +++ b/tests/bugs/bug-1037501.t @@ -0,0 +1,220 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +function write_file() +{ + path="$1"; shift + echo "$*" > "$path" +} + +cleanup; +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +## Start and create a volume +mkdir -p ${B0}/${V0}-0 +mkdir -p ${B0}/${V0}-1 +mkdir -p ${B0}/${V0}-2 +TEST $CLI volume create $V0 replica 3 $H0:$B0/${V0}-{0,1,2} + +## Verify volume is created +EXPECT "$V0" volinfo_field $V0 'Volume Name'; +EXPECT 'Created' volinfo_field $V0 'Status'; + +## Make sure io-cache and write-behind don't interfere. +TEST $CLI volume set $V0 data-self-heal off; + +## Make sure automatic self-heal doesn't perturb our results. +TEST $CLI volume set $V0 cluster.self-heal-daemon off + +TEST $CLI volume set $V0 background-self-heal-count 0 + +## Start volume and verify +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +## Mount native +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0 + +TEST `echo "TEST-FILE" > $M0/File` +TEST `mkdir $M0/Dir` +TEST `ln $M0/File $M0/Link` +TEST `mknod $M0/FIFO p` + +TEST $CLI volume add-brick $V0 replica 4 $H0:$B0/$V0-3 force +TEST $CLI volume add-brick $V0 replica 5 $H0:$B0/$V0-4 force +TEST $CLI volume add-brick $V0 replica 6 $H0:$B0/$V0-5 force + +sleep 10 + +TEST ls $M0/ + + +function compare() +{ + var=-1; + if [ $1 == $2 ]; then + var=0; + else + var=-1; + fi + + echo $var +} + + +var1=`getfattr -d -m . $B0/$V0-0/File -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000020000000200000000" + +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-0/File -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-0/File -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/File -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/File -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/File -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/File -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/File -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/File -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-0/Dir -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000000000000100000001" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-0/Dir -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000000000000100000001" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-0/Dir -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000000000000100000001" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/Dir -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000000000000100000001" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/Dir -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000000000000100000001" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/Dir -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000000000000100000001" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/Dir -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000000000000100000001" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/Dir -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000000000000100000001" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/Dir -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000000000000100000001" +EXPECT 0 compare $var1 $var2 + + +var1=`getfattr -d -m . $B0/$V0-0/Link -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000020000000200000000" + +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-0/Link -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-0/Link -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/Link -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/Link -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/Link -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/Link -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/Link -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/Link -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000020000000200000000" +EXPECT 0 compare $var1 $var2 + + + + +var1=`getfattr -d -m . $B0/$V0-0/FIFO -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000000000000100000000" + +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-0/FIFO -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000000000000100000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-0/FIFO -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000000000000100000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/FIFO -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000000000000100000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/FIFO -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000000000000100000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-1/FIFO -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000000000000100000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/FIFO -e hex 2>&1 | grep "client-3"` +var2="trusted.afr.$V0-client-3=0x000000000000000100000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/FIFO -e hex 2>&1 | grep "client-4"` +var2="trusted.afr.$V0-client-4=0x000000000000000100000000" +EXPECT 0 compare $var1 $var2 + +var1=`getfattr -d -m . $B0/$V0-2/FIFO -e hex 2>&1 | grep "client-5"` +var2="trusted.afr.$V0-client-5=0x000000000000000100000000" +EXPECT 0 compare $var1 $var2 + +cleanup; -- cgit From d4b8825436daad701995e120f38da706e5fe97c1 Mon Sep 17 00:00:00 2001 From: Krishnan Parthasarathi Date: Tue, 24 Dec 2013 17:58:21 +0530 Subject: socket: unix socket connect path can't be greater than UNIX_PATH_MAX characters Change-Id: I74788b63dd1c14507aa6d65182ea4b87a2e1f389 BUG: 1046308 Signed-off-by: Krishnan Parthasarathi Reviewed-on: http://review.gluster.org/6589 Tested-by: Gluster Build System Reviewed-by: Vijaikumar Mallikarjuna Reviewed-by: Vijay Bellur --- tests/bugs/bug-1046308.t | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 tests/bugs/bug-1046308.t (limited to 'tests') diff --git a/tests/bugs/bug-1046308.t b/tests/bugs/bug-1046308.t new file mode 100644 index 000000000..cfec3a35d --- /dev/null +++ b/tests/bugs/bug-1046308.t @@ -0,0 +1,19 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc + +cleanup; + +volname="StartMigrationDuringRebalanceTest" +TEST glusterd +TEST pidof glusterd; + +TEST $CLI volume info; +TEST $CLI volume create $volname $H0:$B0/${volname}{1,2}; +TEST $CLI volume start $volname; +TEST $CLI volume rebalance $volname start; + +cleanup; + + + -- cgit From 6b41a0b7dfd9f48e1518430bacba9135bee4fcb4 Mon Sep 17 00:00:00 2001 From: Venkatesh Somyajulu Date: Fri, 27 Dec 2013 16:51:29 +0530 Subject: test: Modified bug-1037501.t script Change-Id: I3114009681d49249fe292f94a464efc419c944cb BUG: 1037501 Signed-off-by: Venkatesh Somyajulu Reviewed-on: http://review.gluster.org/6596 Reviewed-by: Pranith Kumar Karampuri Tested-by: Gluster Build System --- tests/bugs/bug-1037501.t | 185 ++++++++++++++++++++++++++++------------------- 1 file changed, 109 insertions(+), 76 deletions(-) (limited to 'tests') diff --git a/tests/bugs/bug-1037501.t b/tests/bugs/bug-1037501.t index 5470d0563..d11c788a0 100755 --- a/tests/bugs/bug-1037501.t +++ b/tests/bugs/bug-1037501.t @@ -65,156 +65,189 @@ function compare() echo $var } +var2="000000000000000000000000" var1=`getfattr -d -m . $B0/$V0-0/File -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000020000000200000000" - -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/File -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/File -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/File -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1| cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/File -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/File -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/File -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/File -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/File -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/Dir -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000000000000100000001" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/Dir -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000000000000100000001" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/Dir -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000000000000100000001" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/Dir -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000000000000100000001" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/Dir -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000000000000100000001" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/Dir -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000000000000100000001" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/Dir -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000000000000100000001" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/Dir -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000000000000100000001" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/Dir -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000000000000100000001" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/Link -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000020000000200000000" - -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/Link -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/Link -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/Link -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/Link -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/Link -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/Link -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/Link -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/Link -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000020000000200000000" -EXPECT 0 compare $var1 $var2 - +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/FIFO -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000000000000100000000" - -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/FIFO -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000000000000100000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-0/FIFO -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000000000000100000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/FIFO -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000000000000100000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/FIFO -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000000000000100000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-1/FIFO -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000000000000100000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/FIFO -e hex 2>&1 | grep "client-3"` -var2="trusted.afr.$V0-client-3=0x000000000000000100000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/FIFO -e hex 2>&1 | grep "client-4"` -var2="trusted.afr.$V0-client-4=0x000000000000000100000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 var1=`getfattr -d -m . $B0/$V0-2/FIFO -e hex 2>&1 | grep "client-5"` -var2="trusted.afr.$V0-client-5=0x000000000000000100000000" -EXPECT 0 compare $var1 $var2 +EXPECT "0" echo $? +var3=`echo $var1 | cut -d x -f 2` +EXPECT_NOT $var2 echo $var3 cleanup; -- cgit From 7e3dd526c62b3a1bb59945efdfed2c2fbbcf9cf9 Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Mon, 23 Dec 2013 12:53:32 +0100 Subject: rpc/server: add anonuid and anongid options for root-squash Introduce new options to modify the behaviour of server.root-squash. With server.anonuid and server.anongid the uid/gid can be specified and the root user (uid=0 and gid=0) will be mapped to the given uid/gid instead of nfsnobody (uid=65534 and gid=65534). Many thanks to Vikhyat Umrao for writing the majority of the test-case! Change-Id: I6379a3d2ef52b9b9707f2f6f0529657580c8d779 BUG: 1043886 CC: Vikhyat Umrao Signed-off-by: Niels de Vos Reviewed-on: http://review.gluster.org/6546 Reviewed-by: Santosh Pradhan Reviewed-by: Vikhyat Umrao Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- tests/bugs/bug-1043886.t | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 tests/bugs/bug-1043886.t (limited to 'tests') diff --git a/tests/bugs/bug-1043886.t b/tests/bugs/bug-1043886.t new file mode 100755 index 000000000..fb7ecb194 --- /dev/null +++ b/tests/bugs/bug-1043886.t @@ -0,0 +1,55 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../nfs.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2}; +TEST $CLI volume start $V0 + +sleep 2; +## Mount FUSE with caching disabled +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 $M0; + +EXPECT_WITHIN 20 "1" is_nfs_export_available; + +## Mount volume as NFS export +TEST mount -t nfs -o vers=3,nolock $H0:/$V0 $N0; + +# just a random uid/gid +uid=22162 +gid=5845 + +mkdir $N0/other; +chown $uid:$gid $N0/other; + +TEST $CLI volume set $V0 server.root-squash on; +TEST $CLI volume set $V0 server.anonuid $uid; +TEST $CLI volume set $V0 server.anongid $gid; + +sleep 2; + +EXPECT_WITHIN 20 "1" is_nfs_export_available; + +# create files and directories in the root of the glusterfs and nfs mount +# which is owned by root and hence the right behavior is getting EACCESS +# as the fops are executed as nfsnobody. +touch $M0/file 2>/dev/null; +TEST [ $? -ne 0 ] +mkdir $M0/dir 2>/dev/null; +TEST [ $? -ne 0 ] + +# Here files and directories should be getting created as other directory is owned +# by tmp_user as server.anonuid and server.anongid have the value of tmp_user uid and gid +TEST touch $M0/other/file 2>/dev/null; +TEST [ "$(stat -c %u:%g $N0/other/file)" = "$uid:$gid" ]; +TEST mkdir $M0/other/dir 2>/dev/null; +TEST [ "$(stat -c %u:%g $N0/other/dir)" = "$uid:$gid" ]; + +TEST $CLI volume stop $V0; +TEST $CLI volume delete $V0; + +cleanup; -- cgit From d25d912835e01c40cb00a0ae93d49f68f9b3542b Mon Sep 17 00:00:00 2001 From: Ravishankar N Date: Thu, 2 Jan 2014 23:06:39 +0530 Subject: glusterd: update volinfo->subvol_count in newly added peers Update the subvol_count when a peer imports information about the friend volumes. Change-Id: Id3884bd5727ff22be7ed87f43a1ec1b5fe34813c BUG: 1047955 Signed-off-by: Ravishankar N Reviewed-on: http://review.gluster.org/6629 Reviewed-by: Krishnan Parthasarathi Tested-by: Gluster Build System --- tests/bugs/bug-1047955.t | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/bugs/bug-1047955.t (limited to 'tests') diff --git a/tests/bugs/bug-1047955.t b/tests/bugs/bug-1047955.t new file mode 100644 index 000000000..e15f3ceef --- /dev/null +++ b/tests/bugs/bug-1047955.t @@ -0,0 +1,23 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../cluster.rc + +function check_peers { + $CLI_1 peer status | grep 'Peer in Cluster (Connected)' | wc -l +} + +cleanup; + +# Create a 2x2 dist-rep volume; peer probe a new node. +# Performing remove-brick from this new node must succeed +# without crashing it's glusterd + +TEST launch_cluster 2; +TEST $CLI_1 volume create $V0 replica 2 $H1:$B1/${V0}{1,2,3,4} +TEST $CLI_1 volume start $V0; +TEST $CLI_1 peer probe $H2; +EXPECT_WITHIN 20 1 check_peers; +TEST $CLI_2 volume remove-brick $V0 $H1:$B1/${V0}{3,4} start; +TEST $CLI_2 volume info +cleanup; -- cgit From a1e26be05c7b344dc8e7f980d0a6ab00695f2f42 Mon Sep 17 00:00:00 2001 From: Santosh Kumar Pradhan Date: Tue, 7 Jan 2014 14:22:03 +0530 Subject: gNFS: mnt3_find_export() by pass AUTH check NFS subdir mount does not respect nfs.rpc-auth-reject option in the volume. If the volume is being mounted, then it would validate the AUTH by mnt3_check_client_net() but if the client is mounting a subdir, the control takes a different code path i.e. mnt3_find_export() which does not bother about the AUTH. FIX: Enforce the AUTH check in mnt3_parse_dir_exports() which is invoked by mnt3_find_export() for subdir mount. Change-Id: I6fdd3e6bd6cbd32b0d9ca620cc4c30fdaff9ca30 BUG: 1049225 Signed-off-by: Santosh Kumar Pradhan Reviewed-on: http://review.gluster.org/6655 Reviewed-by: Niels de Vos Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- tests/bugs/bug-921072.t | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/bugs/bug-921072.t b/tests/bugs/bug-921072.t index e101d5b46..37f8fde52 100755 --- a/tests/bugs/bug-921072.t +++ b/tests/bugs/bug-921072.t @@ -89,12 +89,13 @@ TEST $CLI volume set $V0 nfs.rpc-auth-allow 127.0.0.1 EXPECT_WITHIN 20 1 is_nfs_export_available TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0 +TEST mkdir -p $N0/subdir TEST umount $N0 # case 10: allow a non-localhost ip TEST $CLI volume set $V0 nfs.rpc-auth-allow 192.168.1.1 EXPECT_WITHIN 20 1 is_nfs_export_available -#40 +#41 TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0 # case 11: reject only localhost ip @@ -104,6 +105,7 @@ TEST $CLI volume set $V0 nfs.rpc-auth-reject 127.0.0.1 EXPECT_WITHIN 20 1 is_nfs_export_available TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0 +TEST ! mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0/subdir $N0 # case 12: reject only non-localhost ip TEST $CLI volume set $V0 nfs.rpc-auth-reject 192.168.1.1 @@ -112,7 +114,10 @@ EXPECT_WITHIN 20 1 is_nfs_export_available TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0 $N0 TEST umount $N0 +TEST mount -t nfs -o vers=3,nolock,soft,intr localhost:/$V0/subdir $N0 +TEST umount $N0 + TEST $CLI volume stop --mode=script $V0 -#49 +#52 TEST $CLI volume delete --mode=script $V0 cleanup -- cgit From ce86c132347f0a788ab50ffbd6795a2eb982074e Mon Sep 17 00:00:00 2001 From: Venkatesh Somyajulu Date: Fri, 3 Jan 2014 13:54:25 +0530 Subject: cluster/afr: Unable to self heal symbolic links Problem: Under the entry self heal, readlink is done at the source and sink. When readlink is done at the sink, because link is not present at the sink, afr expects ENOENT. AFR translator takes decisions for new link creation based on ENOENT but server translator is modified to return ESTALE because of which afr xlator is not able to heal. Fix: The check for inode absence at server includes ESTALE as well. Change-Id: I319e4cb4156a243afee79365b7b7a5a7823e9a24 BUG: 1046624 Signed-off-by: Venkatesh Somyajulu Reviewed-on: http://review.gluster.org/6599 Tested-by: Gluster Build System Reviewed-by: Anand Avati --- tests/bugs/bug-1046624.t | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100755 tests/bugs/bug-1046624.t (limited to 'tests') diff --git a/tests/bugs/bug-1046624.t b/tests/bugs/bug-1046624.t new file mode 100755 index 000000000..bd46b5eaf --- /dev/null +++ b/tests/bugs/bug-1046624.t @@ -0,0 +1,49 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +## Start and create a volume +mkdir -p ${B0}/${V0}-0 +mkdir -p ${B0}/${V0}-1 +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}-{0,1} + +## Verify volume is created +EXPECT "$V0" volinfo_field $V0 'Volume Name'; +EXPECT 'Created' volinfo_field $V0 'Status'; + + +## Make sure automatic self-heal doesn't perturb our results. +TEST $CLI volume set $V0 cluster.self-heal-daemon off + +TEST $CLI volume set $V0 background-self-heal-count 0 + +## Start volume and verify +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +## Mount native +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0 + +TEST `echo "TEST-FILE" > $M0/File` +TEST `mkdir $M0/Dir` +TEST kill_brick $V0 $H0 $B0/${V0}-0 + +TEST `ln -s $M0/File $M0/Link1` +TEST `ln -s $M0/Dir $M0/Link2` + +TEST $CLI volume start $V0 force + +TEST `find $M0/ | xargs stat 2>/dev/null 1>/dev/null` + +sleep 60 + +TEST stat $B0/${V0}-0/Link1 +TEST stat $B0/${V0}-0/Link2 + +cleanup; -- cgit From aa3b01533efcd85fc1e654ac14a03ab8e1d5bbab Mon Sep 17 00:00:00 2001 From: Anand Avati Date: Tue, 3 Dec 2013 16:30:45 -0800 Subject: locks: various fixes - implement ref/unref of entry locks (and fix bad pointer deref crashes) - code cleanup and deleted various data types - fix improper read/write lock conflict detection in entrylk - fix indefinite hang of blocked locks on disconnect - register locks in client_t synchronously, fix crashes in disconnect path Change-Id: Id273690c9111b8052139d1847060d1fb5a711924 BUG: 849630 Signed-off-by: Anand Avati Reviewed-on: http://review.gluster.org/6638 Tested-by: Gluster Build System Reviewed-by: Kaleb KEITHLEY Reviewed-by: Vijay Bellur --- tests/bugs/bug-765564.t | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tests') diff --git a/tests/bugs/bug-765564.t b/tests/bugs/bug-765564.t index 0b8b8cd4f..6e4087f80 100644 --- a/tests/bugs/bug-765564.t +++ b/tests/bugs/bug-765564.t @@ -3,6 +3,8 @@ . $(dirname $0)/../include.rc . $(dirname $0)/../volume.rc +cleanup; + TEST glusterd TEST pidof glusterd -- cgit From 3af42583dd804371952d61e9d7ff4c640e67ba0d Mon Sep 17 00:00:00 2001 From: Vijay Bellur Date: Sun, 12 Jan 2014 22:39:14 +0530 Subject: storage/posix: UNWIND right op_error and op_errno in *setxattr() 1. errno was being set after gf_log() in posix_{f}handle_pair, this would cause errno to be overwritten. 2. dht would expect -1 for indication of failure in setxattr callback (dht_err_cbk()). posix_{f}setxattr has been changed to set op_ret as -1 instead of -op_errno. 3. dict_foreach() has been changed to return an error if the invoked fn() returns < 0. Bug report and test case credits to Zorro Lang Change-Id: I96c15f12a5d7717b7584ba392f390a0b4f704a98 BUG: 1051896 Signed-off-by: Vijay Bellur Reviewed-on: http://review.gluster.org/6684 Tested-by: Gluster Build System Reviewed-by: Niels de Vos Reviewed-by: Anand Avati --- tests/bugs/bug-1051896.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/bugs/bug-1051896.t | 24 +++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 tests/bugs/bug-1051896.c create mode 100644 tests/bugs/bug-1051896.t (limited to 'tests') diff --git a/tests/bugs/bug-1051896.c b/tests/bugs/bug-1051896.c new file mode 100644 index 000000000..0ffd81986 --- /dev/null +++ b/tests/bugs/bug-1051896.c @@ -0,0 +1,94 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int do_setfacl(const char *path, const char *options, const char *textacl) +{ + int r; + int type; + acl_t acl; + int dob; + int dok; + int dom; + struct stat st; + char textmode[30]; + + r = 0; + dob = strchr(options,'b') != (char*)NULL; + dok = strchr(options,'k') != (char*)NULL; + dom = strchr(options,'m') != (char*)NULL; + if ((dom && !textacl) + || (!dom && (textacl || (!dok && !dob) || + strchr(options,'d')))) { + errno = EBADRQC; /* "bad request" */ + r = -1; + } else { + if (dob || dok) { + r = acl_delete_def_file(path); + } + if (dob && !r) { + if (!stat(path,&st)) { + sprintf(textmode, + "u::%c%c%c,g::%c%c%c,o::%c%c%c", + (st.st_mode & 0400 ? 'r' : '-'), + (st.st_mode & 0200 ? 'w' : '-'), + (st.st_mode & 0100 ? 'x' : '-'), + (st.st_mode & 0040 ? 'r' : '-'), + (st.st_mode & 0020 ? 'w' : '-'), + (st.st_mode & 0010 ? 'x' : '-'), + (st.st_mode & 004 ? 'r' : '-'), + (st.st_mode & 002 ? 'w' : '-'), + (st.st_mode & 001 ? 'x' : '-')); + acl = acl_from_text(textmode); + if (acl) { + r = acl_set_file(path, + ACL_TYPE_ACCESS,acl); + acl_free(acl); + } else + r = -1; + } else + r = -1; + } + if (!r && dom) { + if (strchr(options,'d')) + type = ACL_TYPE_DEFAULT; + else + type = ACL_TYPE_ACCESS; + acl = acl_from_text(textacl); + if (acl) { + r = acl_set_file(path,type,acl); + acl_free(acl); + } else + r = -1; + } + } + if (r) + r = -errno; + return (r); +} + + +int main(int argc, char *argv[]){ + int rc = 0; + if (argc != 4) { + fprintf(stderr, + "usage: ./setfacl_test \n"); + return 0; + } + if ((rc = do_setfacl(argv[1], argv[2], argv[3])) != 0){ + fprintf(stderr, "do_setfacl failed: %s\n", strerror(errno)); + return rc; + } + return 0; +} diff --git a/tests/bugs/bug-1051896.t b/tests/bugs/bug-1051896.t new file mode 100644 index 000000000..75859cbef --- /dev/null +++ b/tests/bugs/bug-1051896.t @@ -0,0 +1,24 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +## Start and create a volume +TEST glusterd; +TEST pidof glusterd; +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2,3,4}; +TEST $CLI volume start $V0; + +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 --acl -s $H0 --volfile-id $V0 $M0; + +TEST touch $M0/file1; + +gcc -lacl $(dirname $0)/bug-1051896.c -o $(dirname $0)/bug-1051896 +TEST ! $(dirname $0)/bug-1051896 $M0/file1 m 'u::r,u::w,g::r--,o::r--' +rm -f $(dirname $0)/bug-1051896 + +cleanup -- cgit