From 6d3739292b7b51d2ddbab75b5f884fb38925b943 Mon Sep 17 00:00:00 2001 From: Anand Avati Date: Thu, 16 Jan 2014 16:14:36 -0800 Subject: cluster/afr: refactor - Remove client side self-healing completely (opendir, openfd, lookup) - Re-work readdir-failover to work reliably in case of NFS - Remove unused/dead lock recovery code - Consistently use xdata in both calls and callbacks in all FOPs - Per-inode event generation, used to force inode ctx refresh - Implement dirty flag support (in place of pending counts) - Eliminate inode ctx structure, use read subvol bits + event_generation - Implement inode ctx refreshing based on event generation - Provide backward compatibility in transactions - remove unused variables and functions - make code more consistent in style and pattern - regularize and clean up inode-write transaction code - regularize and clean up dir-write transaction code - regularize and clean up common FOPs - reorganize transaction framework code - skip setting xattrs in pending dict if nothing is pending - re-write self-healing code using syncops - re-write simpler self-heal-daemon Change-Id: I1e4080c9796c8a2815c2dab4be3073f389d614a8 BUG: 1021686 Signed-off-by: Anand Avati Reviewed-on: http://review.gluster.org/6010 Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- tests/bugs/bug-1037501.t | 242 +++++++---------------------------------------- 1 file changed, 33 insertions(+), 209 deletions(-) (limited to 'tests/bugs/bug-1037501.t') diff --git a/tests/bugs/bug-1037501.t b/tests/bugs/bug-1037501.t index d11c788a0..596122a72 100755 --- a/tests/bugs/bug-1037501.t +++ b/tests/bugs/bug-1037501.t @@ -24,14 +24,6 @@ TEST $CLI volume create $V0 replica 3 $H0:$B0/${V0}-{0,1,2} 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'; @@ -48,206 +40,38 @@ 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 -} - -var2="000000000000000000000000" - -var1=`getfattr -d -m . $B0/$V0-0/File -e hex 2>&1 | grep "client-3"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -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"` -EXPECT "0" echo $? -var3=`echo $var1 | cut -d x -f 2` -EXPECT_NOT $var2 echo $var3 +sleep 5 + +TEST gluster volume heal $V0 full + +sleep 5 + +EXPECT 10 stat -c '%s' $B0/$V0-0/File +EXPECT 10 stat -c '%s' $B0/$V0-1/File +EXPECT 10 stat -c '%s' $B0/$V0-2/File +EXPECT 10 stat -c '%s' $B0/$V0-3/File +EXPECT 10 stat -c '%s' $B0/$V0-4/File +EXPECT 10 stat -c '%s' $B0/$V0-5/File + +EXPECT 3 stat -c '%h' $B0/$V0-0/Link +EXPECT 3 stat -c '%h' $B0/$V0-1/Link +EXPECT 3 stat -c '%h' $B0/$V0-2/Link +EXPECT 3 stat -c '%h' $B0/$V0-3/Link +EXPECT 3 stat -c '%h' $B0/$V0-4/Link +EXPECT 3 stat -c '%h' $B0/$V0-5/Link + +EXPECT 'directory' stat -c '%F' $B0/$V0-0/Dir +EXPECT 'directory' stat -c '%F' $B0/$V0-1/Dir +EXPECT 'directory' stat -c '%F' $B0/$V0-2/Dir +EXPECT 'directory' stat -c '%F' $B0/$V0-3/Dir +EXPECT 'directory' stat -c '%F' $B0/$V0-4/Dir +EXPECT 'directory' stat -c '%F' $B0/$V0-5/Dir + +EXPECT 'fifo' stat -c '%F' $B0/$V0-0/FIFO +EXPECT 'fifo' stat -c '%F' $B0/$V0-1/FIFO +EXPECT 'fifo' stat -c '%F' $B0/$V0-2/FIFO +EXPECT 'fifo' stat -c '%F' $B0/$V0-3/FIFO +EXPECT 'fifo' stat -c '%F' $B0/$V0-4/FIFO +EXPECT 'fifo' stat -c '%F' $B0/$V0-5/FIFO cleanup; -- cgit