Whamcloud - gitweb
LU-4839 tests: wait for copytool start sanity-hsm/60
[fs/lustre-release.git] / lustre / tests / sanity-hsm.sh
index e5a8980..c2c84ef 100755 (executable)
@@ -336,7 +336,7 @@ make_archive() {
        local file=$HSM_ARCHIVE/$1
        do_facet $SINGLEAGT mkdir -p $(dirname $file)
        do_facet $SINGLEAGT dd if=/dev/urandom of=$file count=32 bs=1000000 ||
-               error "cannot create $file"
+               file_creation_failure dd $file $?
 }
 
 copy2archive() {
@@ -511,17 +511,19 @@ needclients() {
 
 path2fid() {
        $LFS path2fid $1 | tr -d '[]'
+       return ${PIPESTATUS[0]}
 }
 
 get_hsm_flags() {
        local f=$1
        local u=$2
+       local st
 
        if [[ $u == "user" ]]; then
-               local st=$($RUNAS $LFS hsm_state $f)
+               st=$($RUNAS $LFS hsm_state $f)
        else
-               local st=$($LFS hsm_state $f)
                u=root
+               st=$($LFS hsm_state $f)
        fi
 
        [[ $? == 0 ]] || error "$LFS hsm_state $f failed (run as $u)"
@@ -532,7 +534,8 @@ get_hsm_flags() {
 
 get_hsm_archive_id() {
        local f=$1
-       local st=$($LFS hsm_state $f)
+       local st
+       st=$($LFS hsm_state $f)
        [[ $? == 0 ]] || error "$LFS hsm_state $f failed"
 
        local ar=$(echo $st | grep "archive_id" | cut -f5 -d" " |
@@ -556,6 +559,15 @@ check_hsm_flags_user() {
        [[ $st == $fl ]] || error "hsm flags on $f are $st != $fl"
 }
 
+file_creation_failure() {
+       local cmd=$1
+       local f=$2
+       local err=$3
+
+       df $MOUNT $MOUNT2 >&2
+       error "cannot create $f with $cmd, status=$err"
+}
+
 copy_file() {
        local f=
 
@@ -569,20 +581,22 @@ copy_file() {
                f=${f/$DIR/$DIR2}
        fi
        rm -f $f
-       cp $1 $f || error "cannot copy $1 to $f"
+       cp $1 $f || file_creation_failure cp $f $?
+
        path2fid $f || error "cannot get fid on $f"
 }
 
 make_small() {
         local file2=${1/$DIR/$DIR2}
         dd if=/dev/urandom of=$file2 count=2 bs=1M conv=fsync ||
-               error "cannot create $file2"
+               file_creation_failure dd $file2 $?
+
         path2fid $1 || error "cannot get fid on $1"
 }
 
 make_small_sync() {
        dd if=/dev/urandom of=$1 count=1 bs=1M conv=sync ||
-               error "cannot create $1"
+               file_creation_failure dd $1 $?
        path2fid $1 || error "cannot get fid on $1"
 }
 
@@ -611,7 +625,8 @@ make_large_for_striping() {
        [ $? != 0 ] && return $?
 
        dd if=/dev/urandom of=$file2 count=5 bs=$sz conv=fsync ||
-               error "cannot create $file2"
+               file_creation_failure dd $file2 $?
+
        path2fid $1 || error "cannot get fid on $1"
 }
 
@@ -628,7 +643,8 @@ make_large_for_progress() {
        # size is not a multiple of 1M to avoid stripe
        # aligment
        dd if=/dev/urandom of=$file2 count=39 bs=1000000 conv=fsync ||
-               error "cannot create $file2"
+               file_creation_failure dd $file2 $?
+
        path2fid $1 || error "cannot get fid on $1"
 }
 
@@ -645,7 +661,7 @@ make_large_for_progress_aligned() {
        # size is a multiple of 1M to have stripe
        # aligment
        dd if=/dev/urandom of=$file2 count=33 bs=1M conv=fsync ||
-               error "cannot create $file2"
+               file_creation_failure dd $file2 $?
        path2fid $1 || error "cannot get fid on $1"
 }
 
@@ -659,7 +675,7 @@ make_large_for_cancel() {
 
        # Copy timeout is 100s. 105MB => 105s
        dd if=/dev/urandom of=$file2 count=103 bs=1M conv=fsync ||
-               error "cannot create $file2"
+               file_creation_failure dd $file2 $?
        path2fid $1 || error "cannot get fid on $1"
 }
 
@@ -680,7 +696,7 @@ wait_request_state() {
        local cmd="$LCTL get_param -n ${MDT_PREFIX}${mdtidx}.hsm.actions"
        cmd+=" | awk '/'$fid'.*action='$request'/ {print \\\$13}' | cut -f2 -d="
 
-       wait_result $mds "$cmd" $state 100 ||
+       wait_result $mds "$cmd" $state 200 ||
                error "request on $fid is not $state on $mds"
 }
 
@@ -844,7 +860,7 @@ test_3() {
                error "user could not change hsm flags"
        dd if=/etc/passwd of=$f.append bs=1 count=3\
           conv=notrunc oflag=append status=noxfer ||
-               error "could not append to test file"
+               file_creation_failure dd $f.append $?
        check_hsm_flags $f.append "0x00000003"
 
        # Modify a file sets it dirty
@@ -853,7 +869,7 @@ test_3() {
                error "user could not change hsm flags"
        dd if=/dev/zero of=$f.modify bs=1 count=3\
           conv=notrunc status=noxfer ||
-               error "could not modify test file"
+               file_creation_failure dd $f.modify $?
        check_hsm_flags $f.modify "0x00000003"
 
        # Open O_TRUNC sets dirty
@@ -1139,7 +1155,8 @@ test_12c() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        $LFS setstripe -c 2 $f
-       local fid=$(make_large_for_striping $f)
+       local fid
+       fid=$(make_large_for_striping $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        local FILE_CRC=$(md5sum $f)
@@ -2016,7 +2033,8 @@ test_26() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2055,7 +2073,8 @@ test_27b() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2076,7 +2095,8 @@ test_28() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2256,7 +2276,8 @@ test_31b() {
        mkdir -p $DIR/$tdir
 
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2279,7 +2300,8 @@ test_31c() {
        mkdir -p $DIR/$tdir
 
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress_aligned $f)
+       local fid
+       fid=$(make_large_for_progress_aligned $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2302,7 +2324,8 @@ test_33() {
        mkdir -p $DIR/$tdir
 
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2368,7 +2391,8 @@ test_34() {
        mkdir -p $DIR/$tdir
 
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2403,7 +2427,8 @@ test_35() {
 
        local f=$DIR/$tdir/$tfile
        local f1=$DIR/$tdir/$tfile-1
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        local fid1=$(copy_file /etc/passwd $f1)
@@ -2441,7 +2466,8 @@ test_36() {
        mkdir -p $DIR/$tdir
 
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2636,7 +2662,8 @@ test_56() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f ||
@@ -2759,7 +2786,8 @@ test_60() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        local mdtidx=0
@@ -2775,6 +2803,16 @@ test_60() {
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f ||
                error "could not archive file"
 
+       local agent=$(facet_active_host $SINGLEAGT)
+       local prefix=$TESTLOG_PREFIX
+       [[ -z "$TESTNAME" ]] || prefix=$prefix.$TESTNAME
+       local copytool_log=$prefix.copytool_log.$agent.log
+
+
+       wait_update $agent \
+           "grep -o start.copy $copytool_log" "start copy" 100 ||
+               error "copytool failed to start"
+
        local cmd="$LCTL get_param -n ${mdt}.hsm.active_requests"
        cmd+=" | awk '/'$fid'.*action=ARCHIVE/ {print \\\$12}' | cut -f2 -d="
 
@@ -2867,7 +2905,8 @@ test_71() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f ||
@@ -3144,7 +3183,8 @@ test_104() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        # if cdt is on, it can serve too quickly the request
@@ -3457,7 +3497,8 @@ test_200() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_cancel $f)
+       local fid
+       fid=$(make_large_for_cancel $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        # test with cdt on is made in test_221
@@ -3500,7 +3541,8 @@ test_202() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -3547,7 +3589,8 @@ test_221() {
        mkdir -p $DIR/$tdir
 
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_cancel $f)
+       local fid
+       fid=$(make_large_for_cancel $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        changelog_setup
@@ -3655,7 +3698,8 @@ test_223b() {
        mkdir -p $DIR/$tdir
 
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        changelog_setup
@@ -3716,7 +3760,8 @@ test_225() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid
+       fid=$(make_large_for_progress $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        changelog_setup
@@ -3920,7 +3965,8 @@ test_251() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_cancel $f)
+       local fid
+       fid=$(make_large_for_cancel $f)
        [ $? != 0 ] && skip "not enough free space" && return
 
        cdt_disable
@@ -4225,6 +4271,19 @@ test_405() {
 }
 run_test 405 "archive and release under striped directory"
 
+test_500()
+{
+       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6.92) ] &&
+               skip "HSM migrate is not supported" && return
+
+       # Stop the existing copytool
+       copytool_cleanup
+
+       test_mkdir -p $DIR/$tdir
+       llapi_hsm_test -d $DIR/$tdir || error "One llapi HSM test failed"
+}
+run_test 500 "various LLAPI HSM tests"
+
 copytool_cleanup
 
 complete $SECONDS