summaryrefslogtreecommitdiffstats
path: root/tests/afr.rc
blob: 241789903ba237026c546003adc87a097654c43f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/bin/bash

function create_brick_xattrop_entry {
        local xattrop_dir=$(afr_get_index_path $1)
        local base_entry=`ls $xattrop_dir|grep xattrop`
        local gfid_str
        local params=`echo "$@" | cut -d' ' -f2-`
        echo $params

        for file in $params
        do
                gfid_str=$(gf_gfid_xattr_to_str $(gf_get_gfid_xattr $1/$file))
                ln $xattrop_dir/$base_entry $xattrop_dir/$gfid_str
        done
}

function diff_dirs {
        diff <(ls $1 | sort) <(ls $2 | sort)
}

function heal_status {
        local f1_path="${1}/${3}"
        local f2_path="${2}/${3}"
        local zero_xattr="000000000000000000000000"
        local insync=""
        diff_dirs $f1_path $f2_path
        if [ $? -eq 0 ];
        then
                insync="Y"
        else
                insync="N"
        fi
        local xattr11=$(get_hex_xattr trusted.afr.$V0-client-0 $f1_path)
        local xattr12=$(get_hex_xattr trusted.afr.$V0-client-1 $f1_path)
        local xattr21=$(get_hex_xattr trusted.afr.$V0-client-0 $f2_path)
        local xattr22=$(get_hex_xattr trusted.afr.$V0-client-1 $f2_path)
        local dirty1=$(get_hex_xattr trusted.afr.dirty $f1_path)
        local dirty2=$(get_hex_xattr trusted.afr.dirty $f2_path)
        if [ -z $xattr11 ]; then xattr11="000000000000000000000000"; fi
        if [ -z $xattr12 ]; then xattr12="000000000000000000000000"; fi
        if [ -z $xattr21 ]; then xattr21="000000000000000000000000"; fi
        if [ -z $xattr22 ]; then xattr22="000000000000000000000000"; fi
        if [ -z $dirty1 ]; then dirty1="000000000000000000000000"; fi
        if [ -z $dirty2 ]; then dirty2="000000000000000000000000"; fi
        echo ${insync}${xattr11}${xattr12}${xattr21}${xattr22}${dirty1}${dirty2}
}
# Check if given dir's self-heal is done
function is_dir_heal_done {
        local zero_xattr="000000000000000000000000"
        if [ "$(heal_status $@)" == "Y${zero_xattr}${zero_xattr}${zero_xattr}${zero_xattr}${zero_xattr}${zero_xattr}" ];
        then
                echo "Y"
        else
                echo "N"
        fi
}
# Check if the given file's self-heal is done
function is_file_heal_done {
        local f1_path="${1}/${3}"
        local f2_path="${2}/${3}"
        local zxattr="000000000000000000000000"
        local size1=$(stat -c "%s" $f1_path)
        local size2=$(stat -c "%s" $f2_path)
        local diff=$((size1-size2))
        local x11=$(get_hex_xattr trusted.afr.$V0-client-0 $f1_path)
        local x12=$(get_hex_xattr trusted.afr.$V0-client-1 $f1_path)
        local x21=$(get_hex_xattr trusted.afr.$V0-client-0 $f2_path)
        local x22=$(get_hex_xattr trusted.afr.$V0-client-1 $f2_path)
        local dirty1=$(get_hex_xattr trusted.afr.dirty $f1_path)
        local dirty2=$(get_hex_xattr trusted.afr.dirty $f2_path)
        if [ -z $x11 ]; then x11="000000000000000000000000"; fi
        if [ -z $x12 ]; then x12="000000000000000000000000"; fi
        if [ -z $x21 ]; then x21="000000000000000000000000"; fi
        if [ -z $x22 ]; then x22="000000000000000000000000"; fi
        if [ -z $dirty1 ]; then dirty1="000000000000000000000000"; fi
        if [ -z $dirty2 ]; then dirty2="000000000000000000000000"; fi
        if [ "${diff}${x11}${x12}${x21}${x22}${dirty1}${dirty2}" == "0${zxattr}${zxattr}${zxattr}${zxattr}${zxattr}${zxattr}" ];
        then
             echo "Y"
        else
             echo "N"
        fi
}

#count the number of entries marked for self-heal
#in brick $1's index

function count_index_entries()
{
    ls $1/.glusterfs/indices/xattrop | wc -l
}

function afr_up_status()
{
        local v=$1
        local m=$2
        local replica_id=$3
        grep -E "^up = " $m/.meta/graphs/active/${v}-replicate-${replica_id}/private | cut -f2 -d'='
}

function get_quorum_type()
{
        local m="$1"
        local v="$2"
        local repl_id="$3"
        cat $m/.meta/graphs/active/$v-replicate-$repl_id/private|grep quorum-type|awk '{print $3}'
}

function afr_private_key_value()
{
        local v=$1
        local m=$2
        local replica_id=$3
        local key=$4
#xargs at the end will strip leading spaces
        grep -E "^${key} = " $m/.meta/graphs/active/${v}-replicate-${replica_id}/private | cut -f2 -d'=' | xargs
}

function afr_anon_entry_count()
{
    local b=$1
    ls $b/.glusterfs-anonymous-inode* | wc -l
}