#!/bin/bash # Common tier functions # Check if a file is being migrated # by checking for the presence of # the sticky bit # Args: $1 : path to file function is_sticky_set () { echo $1 if [ -k $1 ]; then echo "yes" else echo "no" fi } function exists_and_regular_file () { filepath=$1 if [ -n "$filepath" ]; then if [ -k "$filepath" ] then echo "no" else echo "yes" fi else echo "no" fi } function check_counters { index=0 ret=0 rm -f /tmp/tc*.txt echo "0" > /tmp/tc2.txt $CLI volume rebalance $V0 tier status | grep localhost > /tmp/tc.txt promote=`cat /tmp/tc.txt |awk '{print $2}'` demote=`cat /tmp/tc.txt |awk '{print $3}'` if [ "${promote}" != "${1}" ]; then echo "1" > /tmp/tc2.txt elif [ "${demote}" != "${2}" ]; then echo "2" > /tmp/tc2.txt fi # temporarily disable non-Linux tests. case $OSTYPE in NetBSD | FreeBSD | Darwin) echo "0" > /tmp/tc2.txt ;; esac cat /tmp/tc2.txt } # Grab md5sum without file path (failed attempt notifications are discarded) function fingerprint { md5sum $1 2> /dev/null | grep --only-matching -m 1 '^[0-9a-f]*' } # Create a large number of files in the current directory. # $1 : file name prefix. Will create files $2-1 to $2-$3 # $2 : number of files function create_many_files { filename=$1 num=$2 for i in `seq 1 $num`; do dd if=/dev/urandom of=./${dirname}/${filename}$i bs=104857 count=1; done } function confirm_tier_removed { $CLI system getspec $V0 | grep $1 if [ $? == 0 ]; then echo "1" else echo "0" fi } function confirm_vol_stopped { $CLI volume stop $1 if [ $? == 0 ]; then echo "0" else echo "1" fi } function sleep_first_cycle { startTime=$(date +%s) mod=$(( ( $startTime % $1 ) + 1 )) sleep $mod } function sleep_until_mid_cycle { startTime=$(date +%s) mod=$(( ( $startTime % $1 ) + 1 )) mod=$(( $1 - $mod )) mod=$(( $mod + $1 / 2 )) sleep $mod } function tier_daemon_check () { pgrep -f "rebalance/$V0" echo "$?" } function rebalance_run_time () { local time=$($CLI volume rebalance $1 status | awk '{print $9}' | sed -n 3p); local hh=$(echo $time | cut -d ':' -f1); local mm=$(echo $time | cut -d ':' -f2); local ss=$(echo $time | cut -d ':' -f3); local total=$(($hh * 3600 + $mm * 60 + $ss)); echo $total; }