3
# Test read transaction inode refresh logic for thin-arbiter.
5
. $(dirname $0)/../../include.rc
6
. $(dirname $0)/../../volume.rc
7
. $(dirname $0)/../../thin-arbiter.rc
9
TEST ta_create_brick_and_volfile brick0
10
TEST ta_create_brick_and_volfile brick1
11
TEST ta_create_ta_and_volfile ta
12
TEST ta_start_brick_process brick0
13
TEST ta_start_brick_process brick1
14
TEST ta_start_ta_process ta
16
TEST ta_create_mount_volfile brick0 brick1 ta
17
# Set afr xlator options to choose brick0 as read-subvol.
18
sed -i '/iam-self-heal-daemon/a \ option read-subvolume-index 0' $B0/mount.vol
20
sed -i '/iam-self-heal-daemon/a \ option choose-local false' $B0/mount.vol
23
TEST ta_start_mount_process $M0
24
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" ta_up_status $V0 $M0 0
25
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "trusted.afr.patchy-ta-2" ls $B0/ta
28
TEST ls $B0/brick0/FILE
29
TEST ls $B0/brick1/FILE
31
TEST setfattr -n user.name -v ravi $M0/FILE
33
# Remove gfid hardlink from brick0 which is the read-subvol for FILE.
34
# This triggers inode refresh up on a getfattr and eventually calls
35
# afr_ta_read_txn(). Without this patch, afr_ta_read_txn() will again query
36
# brick0 causing getfattr to fail.
37
TEST rm -f $(gf_get_gfid_backend_file_path $B0/brick0 FILE)
38
TEST getfattr -n user.name $M0/FILE