From c78998c39f0857ea7aacba360632c148afc54a55 Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Thu, 22 Jan 2015 13:53:47 +0530 Subject: cluster/afr: When parent and entry read subvols are different, set entry->inode to NULL That way a lookup would be forced on the entry, and its attributes will always be selected from its read subvol. Change-Id: Iaba25e2cd5f83e983fc8b1a1f48da3850808e6b8 BUG: 1179169 Signed-off-by: Krutika Dhananjay Reviewed-on: http://review.gluster.org/9477 Reviewed-by: Pranith Kumar Karampuri Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- tests/basic/afr/resolve.t | 8 ++++---- tests/volume.rc | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/basic/afr/resolve.t b/tests/basic/afr/resolve.t index ce7ec841418..2d400563c2e 100644 --- a/tests/basic/afr/resolve.t +++ b/tests/basic/afr/resolve.t @@ -24,7 +24,7 @@ TEST kill_brick $V0 $H0 $B0/${V0}0 rm -rf $B0/${V0}0/.glusterfs $B0/${V0}0/a TEST $CLI volume start $V0 force -EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status $V0 0 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status_meta $M0 $V0-replicate-0 0 #Test that the lookup returns ENOENT instead of ESTALE #If lookup returns ESTALE this command will fail with ESTALE TEST touch f @@ -44,8 +44,8 @@ echo jkl > $M1/b #gfid-mismatch happened. This should result in EIO TEST setfattr -x trusted.afr.$V0-client-0 $B0/${V0}1 TEST $CLI volume start $V0 force -EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status $V0 0 -# The kernel knows nothing about the tricks done to the volume, and the file +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status_meta $M0 $V0-replicate-0 0 +# The kernel knows nothing about the tricks done to the volume, and the file # may still be in page cache. Wait for timeout. -EXPECT_WITHIN 10 "" cat $M0/b +EXPECT_WITHIN 10 "^$" cat $M0/b cleanup diff --git a/tests/volume.rc b/tests/volume.rc index 36f1350b9bc..7e8810852f5 100644 --- a/tests/volume.rc +++ b/tests/volume.rc @@ -103,6 +103,13 @@ function _afr_child_up_status { echo "$up" } +function afr_child_up_status_meta { + local mnt=$1 + local repl=$2 + local child=$3 + grep "child_up\[$child\]" $mnt/.meta/graphs/active/$repl/private | awk '{print $3}' +} + function afr_child_up_status { local vol=$1 #brick_id is (brick-num in volume info - 1) -- cgit