Whamcloud - gitweb
LU-5710 all: second batch of corrected typos and grammar errors
[fs/lustre-release.git] / lustre / tests / sanity-hsm.sh
index f87ef93..0ee67b1 100755 (executable)
@@ -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" " |
@@ -561,7 +564,7 @@ file_creation_failure() {
        local f=$2
        local err=$3
 
-       df $MOUNT $MOUNT2
+       df $MOUNT $MOUNT2 >&2
        error "cannot create $f with $cmd, status=$err"
 }
 
@@ -693,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"
 }
 
@@ -927,7 +930,7 @@ test_9() {
 
        copytool_cleanup
 }
-run_test 9 "Use of explict archive number, with dedicated copytool"
+run_test 9 "Use of explicit archive number, with dedicated copytool"
 
 test_9a() {
        needclients 3 || return 0
@@ -1152,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)
@@ -1381,6 +1385,26 @@ test_12o() {
 }
 run_test 12o "Layout-swap failure during Restore leaves file released"
 
+test_12p() {
+       # test needs a running copytool
+       copytool_setup
+
+       mkdir $DIR/$tdir
+       local f=$DIR/$tdir/$tfile
+       local fid=$(copy_file /etc/hosts $f)
+
+       $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
+       wait_request_state $fid ARCHIVE SUCCEED
+       do_facet $SINGLEAGT cat $f > /dev/null || error "cannot cat $f"
+       $LFS hsm_release $f || error "cannot release $f"
+       do_facet $SINGLEAGT cat $f > /dev/null || error "cannot cat $f"
+       $LFS hsm_release $f || error "cannot release $f"
+       do_facet $SINGLEAGT cat $f > /dev/null || error "cannot cat $f"
+
+       copytool_cleanup
+}
+run_test 12p "implicit restore of a file on copytool mount point"
+
 test_13() {
        # test needs a running copytool
        copytool_setup
@@ -1810,7 +1834,7 @@ test_24b() {
        copytool_setup
        mkdir -p $DIR/$tdir
 
-       # Check that root can do HSM actions on a ordinary user's file.
+       # Check that root can do HSM actions on a regular user's file.
        rm -f $file
        fid=$(make_small $file)
        sum0=$(md5sum $file)
@@ -2029,7 +2053,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
@@ -2068,7 +2093,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
@@ -2089,7 +2115,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
@@ -2180,6 +2207,7 @@ test_30c() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/SLEEP
+       local slp_sum1=$(md5sum /bin/sleep)
        local fid=$(copy_file /bin/sleep $f)
        chmod 755 $f
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2196,7 +2224,12 @@ test_30c() {
        wait $pid
        [[ $? == 0 ]] || error "Execution failed during run"
        cmp /bin/sleep $f
-       [[ $? == 0 ]] || error "Binary overwritten during exec"
+       if [[ $? != 0 ]]; then
+               local slp_sum2=$(md5sum /bin/sleep)
+               # in case sleep file is modified during the test
+               [[ $slp_sum1 == $slp_sum2 ]] &&
+                       error "Binary overwritten during exec"
+       fi
 
        # cleanup
        # remove no try action mode
@@ -2269,7 +2302,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
@@ -2292,7 +2326,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
@@ -2315,7 +2350,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
@@ -2381,7 +2417,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
@@ -2416,7 +2453,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)
@@ -2454,7 +2492,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
@@ -2649,7 +2688,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 ||
@@ -2772,7 +2812,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
@@ -2788,6 +2829,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="
 
@@ -2880,7 +2931,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 ||
@@ -3157,7 +3209,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
@@ -3470,7 +3523,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
@@ -3513,7 +3567,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
@@ -3560,7 +3615,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
@@ -3668,7 +3724,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
@@ -3729,7 +3786,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
@@ -3933,7 +3991,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
@@ -3946,6 +4005,10 @@ test_251() {
        set_hsm_param loop_period 2
        cdt_enable
 
+       # clear locks to avoid extra delay caused by flush/cancel
+       # and thus prevent early copytool death to timeout.
+       cancel_lru_locks osc
+
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
        wait_request_state $fid ARCHIVE STARTED
        sleep 5
@@ -4238,6 +4301,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