X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fsanity-flr.sh;h=a76320611cf21e3105d533fdcafa7d41115d52b8;hb=8a0554450eaaf86acbc9b6a4c8228dc32ab71b19;hp=e906140838019bf3ecef426c8bff923a01b5fd0b;hpb=325e23899aa38de32ec00b19ed675bcc64c6e5c8;p=fs%2Flustre-release.git diff --git a/lustre/tests/sanity-flr.sh b/lustre/tests/sanity-flr.sh index e906140..a763206 100644 --- a/lustre/tests/sanity-flr.sh +++ b/lustre/tests/sanity-flr.sh @@ -9,7 +9,7 @@ SRCDIR=$(dirname $0) export PATH=$PWD/$SRCDIR:$SRCDIR:$PWD/$SRCDIR/../utils:$PATH:/sbin ONLY=${ONLY:-"$*"} -# Bug number for skipped test: +# Bug number for skipped test: LU-11381 ALWAYS_EXCEPT="$SANITY_FLR_EXCEPT 201" # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT! @@ -143,10 +143,23 @@ verify_comp_attr() { local fl local expected_list=$(comma_list $expected) for fl in ${expected_list//,/ }; do - echo $value | grep -q $fl || { + local neg=0 + + [[ ${fl:0:1} = "^" ]] && neg=1 + [[ $neg = 1 ]] && fl=${fl:1} + + $(echo $value | grep -q $fl) + local match=$? + # 0: matched; 1: not matched + + if [[ $neg = 0 && $match != 0 || + $neg = 1 && $match = 0 ]]; then $getstripe_cmd $tf - error "expected flag $fl existing on $comp_id" - } + [[ $neg = 0 ]] && # expect the flag + error "expected flag '$fl' not in $comp_id" + [[ $neg = 1 ]] && # not expect the flag + error "not expected flag '$fl' in $comp_id" + fi done return } @@ -1256,9 +1269,9 @@ test_37() # assume the mirror id will be 1, 2, and 3 declare -A checksums - checksums[1]=$(md5sum $tf | cut -f 1 -d' ') - checksums[2]=$(md5sum $tf2 | cut -f 1 -d' ') - checksums[3]=$(md5sum $tf3 | cut -f 1 -d' ') + checksums[1]=$(cat $tf | md5sum) + checksums[2]=$(cat $tf2 | md5sum) + checksums[3]=$(cat $tf3 | md5sum) printf '%s\n' "${checksums[@]}" @@ -1275,7 +1288,7 @@ test_37() local sum for i in ${mirror_array[@]}; do - sum=$(mirror_io dump -i $i $tf | md5sum | cut -f 1 -d' ') + sum=$($LFS mirror dump -N $i $tf | md5sum) [ "$sum" = "${checksums[$i]}" ] || error "$i: mismatch: \'${checksums[$i]}\' vs. \'$sum\'" done @@ -1298,7 +1311,7 @@ test_37() # verify copying is successful by checking checksums remount_client $MOUNT for i in ${mirror_array[@]}; do - sum=$(mirror_io dump -i $i $tf | md5sum | cut -f 1 -d' ') + sum=$($LFS mirror dump -N $i $tf | md5sum) [ "$sum" = "${checksums[1]}" ] || error "$i: mismatch checksum after copy" done @@ -1343,13 +1356,13 @@ test_38() { local fsize=$((RANDOM << 8 + 1048576)) $TRUNCATE $ref $fsize - local ref_cksum=$(md5sum $ref | cut -f 1 -d' ') + local ref_cksum=$(cat $ref | md5sum) # case 1: verify write to mirrored file & resync work cp $ref $tf || error "copy from $ref to $f error" verify_flr_state $tf "wp" - local file_cksum=$(md5sum $tf | cut -f 1 -d' ') + local file_cksum=$(cat $tf | md5sum) [ "$file_cksum" = "$ref_cksum" ] || error "write failed, cksum mismatch" get_mirror_ids $tf @@ -1357,8 +1370,7 @@ test_38() { local valid_mirror stale_mirror id mirror_cksum for id in "${mirror_array[@]}"; do - mirror_cksum=$(mirror_io dump -i $id $tf | - md5sum | cut -f 1 -d' ') + mirror_cksum=$($LFS mirror dump -N $id $tf | md5sum) [ "$ref_cksum" == "$mirror_cksum" ] && { valid_mirror=$id; continue; } @@ -1371,8 +1383,7 @@ test_38() { mirror_io resync $tf || error "resync failed" verify_flr_state $tf "ro" - mirror_cksum=$(mirror_io dump -i $stale_mirror $tf | - md5sum | cut -f 1 -d' ') + mirror_cksum=$($LFS mirror dump -N $stale_mirror $tf | md5sum) [ "$file_cksum" = "$ref_cksum" ] || error "resync failed" # case 2: inject an error to make mirror_io exit after changing @@ -1480,7 +1491,7 @@ test_41() { dd if=/dev/urandom of=$tf-1 bs=1M count=4 conv=notrunc || error "writing $tf-1 failed" - local sum0=$(cat $tf-1 | md5sum | cut -f 1 -d' ') + local sum0=$(cat $tf-1 | md5sum) echo " **verify files be WRITE_PENDING" verify_flr_state $tf "wp" @@ -1497,11 +1508,10 @@ test_41() { $LFS mirror resync $tf $tf-1 || error "mirror resync $tf $tf-1 failed" echo " **verify $tf-1 data consistency in all mirrors" - local sum for i in 1 2 3; do - sum=$(mirror_io dump -i $i $tf-1 | md5sum | cut -f 1 -d' ') - [ "$sum" = "$sum0" ] || - error "$i: mismatch: $sum vs. $sum0" + local sum=$($LFS mirror dump -N$i $tf-1 | md5sum) + [[ "$sum" = "$sum0" ]] || + error "$tf-1.$i: checksum mismatch: $sum != $sum0" done echo " **verify files be RDONLY" @@ -1949,6 +1959,67 @@ test_47() { } run_test 47 "Verify mirror obj alloc" +test_48() { + local tf=$DIR/$tfile + + rm -f $tf + echo " ** create 2 mirrors FLR file $tf" + $LFS mirror create -N -E2M -Eeof --flags prefer \ + -N -E1M -Eeof $tf || + error "create FLR file $tf failed" + + echo " ** write it" + dd if=/dev/urandom of=$tf bs=1M count=3 || error "write $tf failed" + verify_flr_state $tf "wp" + + local sum0=$(md5sum < $tf) + + echo " ** resync the file" + $LFS mirror resync $tf + + echo " ** snapshot mirror 2" + $LFS setstripe --comp-set -I 0x20003 --comp-flags=nosync $tf + + echo " ** write it again" + dd if=/dev/urandom of=$tf bs=1M count=3 || error "write $tf failed" + echo " ** resync it again" + $LFS mirror resync $tf + + verify_flr_state $tf "wp" + verify_comp_attr lcme_flags $tf 0x20003 nosync,stale + + local sum1=$($LFS mirror dump -N1 $tf | md5sum) + local sum2=$($LFS mirror dump -N2 $tf | md5sum) + + echo " ** verify mirror 2 doesn't change" + echo "original checksum: $sum0" + echo "mirror 1 checksum: $sum1" + echo "mirror 2 checksum: $sum2" + [[ $sum0 = $sum2 ]] || + error "original checksum: $sum0, mirror 2 checksum: $sum2" + echo " ** mirror 2 stripe info" + $LFS getstripe -v --mirror-index=2 $tf + + echo " ** resync mirror 2" + $LFS mirror resync --only 2 $tf + + verify_flr_state $tf "ro" + verify_comp_attr lcme_flags $tf 0x20003 nosync,^stale + + sum1=$($LFS mirror dump -N1 $tf | md5sum) + sum2=$($LFS mirror dump -N2 $tf | md5sum) + + echo " ** verify mirror 2 resync-ed" + echo "original checksum: $sum0" + echo "mirror 1 checksum: $sum1" + echo "mirror 2 checksum: $sum2" + [[ $sum1 = $sum2 ]] || + error "mirror 1 checksum: $sum1, mirror 2 checksum: $sum2" + echo " ** mirror 2 stripe info" + $LFS getstripe -v --mirror-index=2 $tf +} +run_test 48 "Verify snapshot mirror" + ctrl_file=$(mktemp /tmp/CTRL.XXXXXX) lock_file=$(mktemp /var/lock/FLR.XXXXXX) @@ -2081,9 +2152,9 @@ test_200() { mirror_io resync $tf get_mirror_ids $tf - local csum=$(mirror_io dump -i ${mirror_array[0]} $tf | md5sum) + local csum=$($LFS mirror dump -N ${mirror_array[0]} $tf | md5sum) for id in ${mirror_array[@]:1}; do - [ "$(mirror_io dump -i $id $tf | md5sum)" = "$csum" ] || + [ "$($LFS mirror dump -N $id $tf | md5sum)" = "$csum" ] || error "checksum error for mirror $id" done