ALWAYS_EXCEPT="$SANITY_HSM_EXCEPT "
if $SHARED_KEY; then
-# bug number for skipped tests: LU-9795 LU-9795
- ALWAYS_EXCEPT+=" 13 402b "
+# bug number for skipped tests: LU-9795
+ ALWAYS_EXCEPT+=" 402b "
# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
fi
# Exception is the test which need two separate nodes
CLIENT2=${CLIENT2:-$CLIENT1}
-#
-# In order to test multiple remote HSM agents, a new facet type named "AGT" and
-# the following associated variables are added:
-#
-# AGTCOUNT: number of agents
-# AGTDEV{N}: target HSM mount point (root path of the backend)
-# agt{N}_HOST: hostname of the agent agt{N}
-# SINGLEAGT: facet of the single agent
-#
-# The number of agents is initialized as the number of remote client nodes.
-# By default, only single copytool is started on a remote client/agent. If there
-# was no remote client, then the copytool will be started on the local client.
-#
-init_agt_vars() {
- local n
- local agent
-
- export AGTCOUNT=${AGTCOUNT:-$((CLIENTCOUNT - 1))}
- [[ $AGTCOUNT -gt 0 ]] || AGTCOUNT=1
-
- export SHARED_DIRECTORY=${SHARED_DIRECTORY:-$TMP}
- if [[ $CLIENTCOUNT -gt 1 ]] &&
- ! check_shared_dir $SHARED_DIRECTORY $CLIENTS; then
- skip_env "SHARED_DIRECTORY should be accessible"\
- "on all client nodes"
- exit 0
- fi
-
- # We used to put the HSM archive in $SHARED_DIRECTORY but that
- # meant NFS issues could hose sanity-hsm sessions. So now we
- # use $TMP instead.
- for n in $(seq $AGTCOUNT); do
- eval export AGTDEV$n=\$\{AGTDEV$n:-"$TMP/arc$n"\}
- agent=CLIENT$((n + 1))
- if [[ -z "${!agent}" ]]; then
- [[ $CLIENTCOUNT -eq 1 ]] && agent=CLIENT1 ||
- agent=CLIENT2
- fi
- eval export agt${n}_HOST=\$\{agt${n}_HOST:-${!agent}\}
- done
-
- export SINGLEAGT=${SINGLEAGT:-agt1}
-
- export HSMTOOL=${HSMTOOL:-"lhsmtool_posix"}
- export HSMTOOL_VERBOSE=${HSMTOOL_VERBOSE:-""}
- export HSMTOOL_UPDATE_INTERVAL=${HSMTOOL_UPDATE_INTERVAL:=""}
- export HSMTOOL_EVENT_FIFO=${HSMTOOL_EVENT_FIFO:=""}
- export HSMTOOL_TESTDIR
-
- HSM_ARCHIVE_NUMBER=2
-
- # The test only support up to 10 MDTs
- MDT_PREFIX="mdt.$FSNAME-MDT000"
- HSM_PARAM="${MDT_PREFIX}0.hsm"
-
- # archive is purged at copytool setup
- HSM_ARCHIVE_PURGE=true
-
- # Don't allow copytool error upon start/setup
- HSMTOOL_NOERROR=false
-}
-
-# Get the backend root path for the given agent facet.
-copytool_device() {
- local facet=$1
- local dev=AGTDEV$(facet_number $facet)
-
- echo -n ${!dev}
-}
-
-get_mdt_devices() {
- local mdtno
- # get MDT device for each mdc
- for mdtno in $(seq 1 $MDSCOUNT); do
- local idx=$(($mdtno - 1))
- MDT[$idx]=$($LCTL get_param -n \
- mdc.$FSNAME-MDT000${idx}-mdc-*.mds_server_uuid |
- awk '{gsub(/_UUID/,""); print $1}' | head -n1)
- done
-}
-
search_copytools() {
local hosts=${1:-$(facet_active_host $SINGLEAGT)}
- do_nodesv $hosts "libtool execute pgrep -x $HSMTOOL"
-}
-
-kill_copytools() {
- local hosts=${1:-$(facet_active_host $SINGLEAGT)}
-
- echo "Killing existing copytools on $hosts"
- do_nodesv $hosts "libtool execute killall -q $HSMTOOL" || true
- copytool_continue "$hosts"
+ do_nodesv $hosts "pgrep --pidfile=$HSMTOOL_PID_FILE hsmtool"
}
wait_copytools() {
local wait_timeout=200
local wait_start=$SECONDS
local wait_end=$((wait_start + wait_timeout))
- local sleep_time=100000 # 0.1 second
+ local sleep_time=1
while ((SECONDS < wait_end)); do
if ! search_copytools $hosts; then
fi
echo "copytools still running on $hosts"
- usleep $sleep_time
- [ $sleep_time -lt 32000000 ] && # 3.2 seconds
- sleep_time=$(bc <<< "$sleep_time * 2")
+ sleep $sleep_time
+ [ $sleep_time -lt 5 ] && sleep_time=$((sleep_time + 1))
done
# try to dump Copytool's stack
{
local fid="$1"
- case "$HSMTOOL" in
- lhsmtool_posix)
- printf "%s" "$(hsm_root)/*/*/*/*/*/*/$fid"
- ;;
+ case "$HSMTOOL_ARCHIVE_FORMAT" in
+ v1)
+ printf "%s" "$(hsm_root)/*/*/*/*/*/*/$fid"
+ ;;
+ v2)
+ printf "%s" "$(hsm_root)/*/$fid"
+ ;;
esac
}
copytool_suspend() {
local agents=${1:-$(facet_active_host $SINGLEAGT)}
- stack_trap \
- "do_nodesv $agents libtool execute pkill -CONT -x '$HSMTOOL' || true" EXIT
- do_nodesv $agents "libtool execute pkill -STOP -x $HSMTOOL" || return 0
+ stack_trap "pkill_copytools $agents CONT || true" EXIT
+ pkill_copytools $agents STOP || return 0
echo "Copytool is suspended on $agents"
}
-copytool_continue() {
- local agents=${1:-$(facet_active_host $SINGLEAGT)}
-
- do_nodesv $agents "libtool execute pkill -CONT -x $HSMTOOL" || return 0
- echo "Copytool is continued on $agents"
-}
-
copytool_remove_backend() {
local fid=$1
local be=$(do_facet $SINGLEAGT find "$(hsm_root)" -name $fid)
[[ -n $fid ]] && cmd+=" | grep '$fid'"
cmd+=" | egrep 'WAITING|STARTED'"
- wait_result $SINGLEMDS "$cmd" "" $timeout ||
+ wait_update_facet --verbose mds1 "$cmd" "" $timeout ||
error "requests did not complete"
}
# Lustre mount-point is mandatory and last parameter on
# copytool cmd-line.
- local mntpnt=$(do_rpc_nodes $agent libtool execute ps -C $HSMTOOL -o args= |
+ local mntpnt=$(do_rpc_nodes $agent \
+ pgrep --pidfile=$HSMTOOL_PID_FILE --list-full hsmtool |
awk '{print $NF}')
[ -n "$mntpnt" ] || error "Found no Agent or with no mount-point "\
"parameter"
run_test 1A "lfs hsm flags root/non-root access"
test_1a() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_small_file $f)
}
test_1b() {
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
$LFS setstripe -E 1M -S 1M -E 64M -c 2 -E -1 -c 4 $DIR/$tdir ||
error "failed to set default stripe"
local f=$DIR/$tdir/$tfile
error "wrong archive number, $st != $LOCAL_HSM_ARCHIVE_NUMBER"
LOCAL_HSM_ARCHIVE_NUMBER=33
- if [ $(lustre_version_code client) -ge $(version_code 2.11.56) ] &&
- [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.11.56) ]; then
+ if [ "$CLIENT_VERSION" -ge $(version_code 2.11.56) ] &&
+ [ "$MDS1_VERSION" -ge $(version_code 2.11.56) ]; then
# lustre in the new version supports unlimited archiveID.
# Test whether setting archive number > 32 is supported
$LFS hsm_set --exists --archive-id $LOCAL_HSM_ARCHIVE_NUMBER $f ||
[ $MDS1_VERSION -lt $(version_code 2.10.59) ] &&
skip "need MDS version at least 2.10.59"
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
$LFS setstripe -E 1M -L mdt -E -1 -c 2 $DIR/$tdir ||
error "failed to set default stripe"
local f=$DIR/$tdir/$tfile
run_test 1d "Archive, Release and Restore DoM file"
test_1e() {
- [ $(lustre_version_code $SINGLEMDS) -lt $(version_code $SEL_VER) ] &&
+ [ "$MDS1_VERSION" -lt $(version_code $SEL_VER) ] &&
skip "skipped for lustre < $SEL_VER"
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
$LFS setstripe -E 1G -z 64M -E 10G -z 512M -E -1 -z 1G $DIR/$tdir ||
error "failed to set default stripe"
local comp_file=$DIR/$tdir/$tfile
test_2() {
local f=$DIR/$tdir/$tfile
+ mkdir_on_mdt0 $DIR/$tdir
create_empty_file "$f"
# New files are not dirty
check_hsm_flags $f "0x00000000"
run_test 2 "Check file dirtyness when doing setattr"
test_3() {
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
f=$DIR/$tdir/$tfile
# New files are not dirty
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
$LFS hsm_archive $f
local uuid=$(get_agent_uuid $(facet_active_host $SINGLEAGT))
check_agent_registered $uuid
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
$LFS hsm_archive --archive $archive_id $f
copytool setup --facet agt$n
done
+ mkdir_on_mdt0 $DIR/$tdir
+
# archive files
for n in $(seq $AGTCOUNT); do
file=$DIR/$tdir/$tfile.$n
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
mkdir -p $DIR/$tdir/d1
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
$LFS hsm_archive $f || error "archive request failed"
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
$LFS hsm_archive $f || error "cannot archive $f"
run_test 10d "Archive a file on the default archive id"
test_11a() {
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
copy2archive /etc/hosts $tdir/$tfile
local f=$DIR/$tdir/$tfile
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
$LFS hsm_archive -a $HSM_ARCHIVE_NUMBER $f ||
}
run_test 11b "Import a deleted file using its FID"
+test_11c() {
+ pool_add $TESTNAME || error "Pool creation failed"
+ pool_add_targets $TESTNAME 1 1 || error "pool_add_targets failed"
+
+ mkdir -p $DIR/$tdir
+ $LFS setstripe -p "$TESTNAME" $DIR/$tdir
+
+ copy2archive /etc/hosts $tdir/$tfile
+ copytool import $tdir/$tfile $DIR/$tdir/$tfile
+}
+run_test 11c "Import a file to a directory with a pool"
+
test_12a() {
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
copy2archive /etc/hosts $tdir/$tfile
local f=$DIR/$tdir/$tfile
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
copy2archive /etc/hosts $tdir/$tfile
local f=$DIR/$tdir/$tfile
copytool setup
local f=$DIR/$tdir/$tfile
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
$LFS setstripe -c 2 "$f"
local fid=$(create_file "$f" 1M 5)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
$LFS hsm_archive $f || error "archive request failed"
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
$LFS hsm_archive $f || error "archive of $f failed"
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
# test needs a running copytool
copytool setup
- mkdir $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/hosts $f)
# test needs a running copytool
copytool setup -m "$MOUNT3"
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local f2=$DIR2/$tdir/$tfile
local fid=$(create_small_file $f)
}
run_test 12q "file attributes are refreshed after restore"
+test_12r() {
+ # test needs a running copytool
+ copytool setup
+
+ mkdir_on_mdt0 $DIR/$tdir
+ local f=$DIR/$tdir/$tfile
+ local fid=$(copy_file /etc/hosts $f)
+
+ $LFS hsm_archive $f || error "archive of $f failed"
+ wait_request_state $fid ARCHIVE SUCCEED
+ $LFS hsm_release $f || error "release of $f failed"
+
+ offset=$(lseek_test -d 7 $f)
+
+ # we check we had a restore done
+ wait_request_state $fid RESTORE SUCCEED
+ [[ $offset == 7 ]] || error "offset $offset != 7"
+}
+run_test 12r "lseek restores released file"
+
test_13() {
local -i i j k=0
for i in {1..10}; do
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
+
# archive a file
local f=$DIR/$tdir/$tfile
local fid=$(create_small_file $f)
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
+
# archive files
local f=$DIR/$tdir/$tfile
local count=5
local goal=20
dd if=/dev/zero of=$ref bs=1M count=20
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file $ref $f)
rm $ref
test_21() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/test_release
# LU-4388/LU-4389 - ZFS does not report full number of blocks
# used until file is flushed to disk
- if [ $(facet_fstype ost1) == "zfs" ]; then
+ if [ "$ost1_FSTYPE" == "zfs" ]; then
# this causes an OST_SYNC rpc to be sent
dd if=/dev/zero of=$f bs=512 count=1 oflag=sync conv=notrunc,fsync
# clear locks to reread file data
test_22() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/test_release
local swap=$DIR/$tdir/test_swap
test_23() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/test_mtime
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
fid=$(create_small_file $file)
# Test needs a running copytool.
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
# Check that root can do HSM actions on a regular user's file.
fid=$(create_small_file $file)
# test needs a running copytool
copytool setup
-
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
# Save the default masks and check that cleanup_24c will
# restore the request masks correctly.
local fid1
local fid2
+ mkdir_on_mdt0 $DIR/$tdir
+
fid1=$(create_small_file $file1)
echo $fid1
test_24e() {
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid
test_24f() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
mkdir -p $DIR/$tdir/d1
local f=$DIR/$tdir/$tfile
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
chmod ugo+rwx $DIR/$tdir
echo "Please listen carefully as our options have changed." | tee $file
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
test_26A() { # was test_26
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
- mkdir -p $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
test_26b() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
- mkdir -p $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
test_26c() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
- mkdir -p $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
test_26d() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
- mkdir -p $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_small_file $f)
test_27b() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
test_28() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
test_29b() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_small_file $f)
test_29c() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local fid1=$(create_small_file $DIR/$tdir/$tfile-1)
local fid2=$(create_small_file $DIR/$tdir/$tfile-2)
copytool setup -f agt$n -a $n
done
+ mkdir_on_mdt0 $DIR/$tdir
+
# archive files
file=$DIR/$tdir/$tfile
fid=$(create_small_file $file)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/true
local fid=$(copy_file /bin/true $f)
chmod 755 $f
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/SLEEP
local slp_sum1=$(md5sum /bin/sleep)
local fid=$(copy_file /bin/sleep $f)
test_31a() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
create_archive_file $tdir/$tfile
local f=$DIR/$tdir/$tfile
test_31b() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_file "$f" 1MB 39)
test_31c() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_file "$f" 1M 39)
test_33() {
local f=$DIR/$tdir/$tfile
+
+ mkdir_on_mdt0 $DIR/$tdir
local fid=$(create_empty_file "$f")
copytool setup
test_34() {
# test needs a running copytool
copytool setup -b 1
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
test_35() {
# test needs a running copytool
copytool setup -b 1
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local f1=$DIR/$tdir/$tfile-1
test_36() {
# test needs a running copytool
copytool setup -b 1
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
test_37() {
# LU-5683: check that an archived dirty file can be rearchived.
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid
}
run_test 40 "Parallel archive requests"
+hsm_archive_batch() {
+ local files_num=$1
+ local batch_max=$2
+ local filebase=$3
+ local batch_num=0
+ local fileset=""
+ local i=0
+
+ while [ $i -lt $files_num ]; do
+ if [ $batch_num -eq $batch_max ]; then
+ $LFS hsm_archive $fileset || error "HSM archive failed"
+ # Reset the batch container.
+ fileset=""
+ batch_num=0
+ fi
+
+ fileset+="${filebase}$i "
+ batch_num=$(( batch_num + 1 ))
+ i=$(( i + 1 ))
+ done
+
+ if [ $batch_num -ne 0 ]; then
+ $LFS hsm_archive $fileset || error "HSM archive failed"
+ fileset=""
+ batch_num=0
+ fi
+}
+
+test_50() {
+ local dir=$DIR/$tdir
+ local batch_max=50
+
+ set_hsm_param max_requests 1000000
+ mkdir $dir || error "mkdir $dir failed"
+ df -i $MOUNT
+
+ local start
+ local elapsed
+ local files_num
+ local filebase
+
+ files_num=10000
+ filebase="$dir/$tfile.start."
+ createmany -m $filebase $files_num ||
+ error "createmany -m $filebase failed: $?"
+
+ start=$SECONDS
+ hsm_archive_batch $files_num $batch_max "$filebase"
+ elapsed=$((SECONDS - start))
+ do_facet $SINGLEMDS "$LCTL get_param -n \
+ $HSM_PARAM.actions | grep WAITING | wc -l"
+ unlinkmany $filebase $files_num || error "unlinkmany $filabase failed"
+ echo "Start Phase files_num: $files_num time: $elapsed"
+
+ files_num=20000
+ filebase="$dir/$tfile.in."
+ createmany -m $filebase $files_num ||
+ error "createmany -m $filebase failed: $?"
+ start=$SECONDS
+ hsm_archive_batch $files_num $batch_max "$filebase"
+ elapsed=$((SECONDS - start))
+ unlinkmany $filebase $files_num || error "unlinkmany $filabase failed"
+ echo "Middle Phase files_num: $files_num time: $elapsed"
+
+ files_num=10000
+ filebase="$dir/$tfile.end."
+ createmany -m $filebase $files_num ||
+ error "createmany -m $filebase failed: $?"
+
+ start=$SECONDS
+ hsm_archive_batch $files_num $batch_max "$filebase"
+ elapsed=$((SECONDS - start))
+ do_facet $SINGLEMDS "$LCTL get_param -n \
+ $HSM_PARAM.actions | grep WAITING | wc -l"
+
+ unlinkmany $filebase $files_num || error "unlinkmany $filebase failed"
+ echo "End Phase files_num: $files_num time: $elapsed"
+
+ do_facet $SINGLEMDS "$LCTL get_param -n \
+ $HSM_PARAM.actions | grep WAITING | wc -l"
+
+ cdt_purge
+}
+run_test 50 "Archive with large number of pending HSM actions"
+
test_52() {
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_small_file $f)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_small_file $f)
run_test 53 "Opened for read file on an evicted client should not be set dirty"
test_54() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_file "$f" 1MB 39)
run_test 54 "Write during an archive cancels it"
test_55() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_file "$f" 1MB 39)
run_test 55 "Truncate during an archive cancels it"
test_56() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_file "$f" 1MB 39)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/test_archive_remote
# Create a file on a remote node
do_node $CLIENT2 "dd if=/dev/urandom of=$f bs=1M "\
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local sz=$(stat -c %s /etc/passwd)
# This test validates the fix for LU-4512. Ensure that the -u
# option changes the progress reporting interval from the
# default (30 seconds) to the user-specified interval.
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_file "$f" 1M 10)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
cdt_disable
# Just start and stop the copytool to generate events.
cdt_clear_no_retry
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_small_file "$f")
error "cannot create $test_file on $SINGLEAGT"
copy2archive $test_file $tdir/$tfile
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
copytool import $tdir/$tfile $f
f=$DIR2/$tdir/$tfile
test_90() {
file_count=51 # Max number of files constrained by LNET message size
- mkdir $DIR/$tdir || error "mkdir $DIR/$tdir failed"
+ mkdir_on_mdt0 $DIR/$tdir || error "mkdir $DIR/$tdir failed"
local f=$DIR/$tdir/$tfile
local FILELIST=/tmp/filelist.txt
local i=""
wait_for_grace_delay
$LFS hsm_archive --filelist $FILELIST ||
error "cannot archive a file list"
- wait_all_done 100
+ wait_all_done 200
$LFS hsm_release --filelist $FILELIST ||
error "cannot release a file list"
$LFS hsm_restore --filelist $FILELIST ||
error "cannot restore a file list"
- wait_all_done 100
+ wait_all_done 200
}
run_test 90 "Archive/restore a file list"
DATA=CEA
DATAHEX='[434541]'
test_104() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
test_105() {
local max_requests=$(get_hsm_param max_requests)
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local i=""
stack_trap "set_hsm_param max_requests $max_requests" EXIT
# test needs a running copytool
copytool setup
# create and archive file
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f1=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f1)
$LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f1
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
copy2archive /etc/passwd $tdir/$tfile
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
$LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
copy2archive /etc/passwd $tdir/$tfile
local f=$DIR/$tdir/$tfile
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
stack_trap cdt_clear_no_retry EXIT
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
cdt_disable
run_test 112 "State of recorded request"
test_113() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local file1=$DIR/$tdir/$tfile
local file2=$DIR2/$tdir/$tfile
run_test 113 "wrong stat after restore"
test_200() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
test_201() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
create_archive_file $tdir/$tfile
run_test 201 "Register/Cancel restore"
test_202() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
run_test 220a "Changelog for failed archive"
test_221() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
copy2archive /etc/passwd $tdir/$tfile
local f=$DIR/$tdir/$tfile
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
copy2archive /etc/passwd $tdir/$tfile
local f=$DIR/$tdir/$tfile
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
test_223a() {
# test needs a running copytool
copytool setup -b 1
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
create_archive_file $tdir/$tfile
run_test 223a "Changelog for restore canceled (import case)"
test_223b() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(copy_file /etc/passwd $f)
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f1=$DIR/$tdir/$tfile-1
local f2=$DIR/$tdir/$tfile-2
test_228() {
# test needs a running copytool
copytool setup
+ mkdir_on_mdt0 $DIR/$tdir
local fid=$(create_small_sync_file $DIR/$tfile)
$LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $DIR/$tfile
# send 1 requests of each kind twice
copytool setup
+
+ mkdir_on_mdt0 $DIR/$tdir
+
# setup the files
for action in archive restore remove; do
local filepath="$file"-to-$action
run_test 250 "Coordinator max request"
test_251() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
run_test 251 "Coordinator request timeout"
test_252() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local fid=$(create_empty_file "$f")
# test needs a running copytool
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
dd if=/dev/zero of=$f bs=1MB count=10
"set_hsm_param max_requests $(get_hsm_param max_requests)" EXIT
set_hsm_param max_requests "$request_count"
+ mkdir_on_mdt0 $DIR/$tdir
+
local timeout
local count
for request_type in archive restore remove; do
[ $MDS1_VERSION -lt $(version_code 2.12.0) ] &&
skip "Need MDS version at least 2.12.0"
+ mkdir_on_mdt0 $DIR/$tdir
+
local file="$DIR/$tdir/$tfile"
local fid=$(create_empty_file "$file")
local -a files=("$DIR/$tdir/$tfile".{0..15})
local file
+ mkdir_on_mdt0 $DIR/$tdir
+
for file in "${files[@]}"; do
create_small_file "$file"
done
local -a files=("$DIR/$tdir/$tfile".{0..15})
local file
+ mkdir_on_mdt0 $DIR/$tdir
+
for file in "${files[@]}"; do
create_small_file "$file"
done
local -a files=("$DIR/$tdir/$tfile".{0..15})
local file
+ mkdir_on_mdt0 $DIR/$tdir
+
for file in "${files[@]}"; do
create_small_file "$file"
done
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local dir_mdt0=$DIR/$tdir/mdt0
local dir_mdt1=$DIR/$tdir/mdt1
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local dir_mdt0=$DIR/$tdir/mdt0
local dir_mdt1=$DIR/$tdir/mdt1
test_402b() {
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
touch $f || error "touch $f failed"
copytool setup
# create files on both MDT0000 and MDT0001
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local dir_mdt0=$DIR/$tdir/mdt0
stack_trap "rm -rf $dir_mdt0" EXIT
copytool setup
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local striped_dir=$DIR/$tdir/striped_dir
local fid
local mdt_index
+ mkdir_on_mdt0 $DIR/$tdir
+
fid=$(create_small_file $DIR/$tdir/$tfile)
echo "old fid $fid"
run_test 406 "attempting to migrate HSM archived files is safe"
test_407() {
+ mkdir_on_mdt0 $DIR/$tdir
+
local f=$DIR/$tdir/$tfile
local f2=$DIR2/$tdir/$tfile
local fid=$(create_empty_file "$f")
md5sum $f2 &
sleep 2
+ do_facet $SINGLEMDS "$LCTL get_param $HSM_PARAM.actions"
# after umount hsm_actions->O/x/x log shouldn't have
# double RESTORE records like below
#[0x200000401:0x1:0x0]...0x58d03a0d/0x58d03a0c action=RESTORE...WAITING
sleep 30 &&
do_facet $SINGLEMDS "$LCTL get_param $HSM_PARAM.actions"&
fail $SINGLEMDS
+ do_facet $SINGLEMDS $LCTL set_param fail_loc=0
+
+ do_facet $SINGLEMDS "$LCTL get_param $HSM_PARAM.actions"
copytool_continue
- wait_request_state $fid RESTORE SUCCEED
+ wait_all_done 100 $fid
}
run_test 407 "Check for double RESTORE records in llog"
test_500()
{
- [ $MDS1_VERSION -lt $(version_code 2.6.92) ] &&
+ [ "$MDS1_VERSION" -lt $(version_code 2.6.92) ] &&
skip "HSM migrate is not supported"
test_mkdir -p $DIR/$tdir
- if [ $(lustre_version_code client) -lt $(version_code 2.11.56) ] ||
- [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ];
+ if [ "$CLIENT_VERSION" -lt $(version_code 2.11.56) ] ||
+ [ "$MDS1_VERSION" -lt $(version_code 2.11.56) ];
then
llapi_hsm_test -d $DIR/$tdir -b ||
error "One llapi HSM test failed"
run_test 500 "various LLAPI HSM tests"
test_600() {
- [ $MDS1_VERSION -lt $(version_code 2.10.58) ] &&
+ [ "$MDS1_VERSION" -lt $(version_code 2.10.58) ] &&
skip "need MDS version at least 2.10.58"
mkdir -p $DIR/$tdir
[ $MDS1_VERSION -lt $(version_code 2.10.58) ] &&
skip "need MDS version at least 2.10.58"
+ stack_trap "restore_opencache" EXIT
+ disable_opencache
+
mkdir -p $DIR/$tdir
local f=$DIR/$tdir/$tfile
[ $MDS1_VERSION -lt $(version_code 2.10.58) ] &&
skip "need MDS version at least 2.10.58"
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local f2=$DIR2/$tdir/$tfile
[ $MDS1_VERSION -lt $(version_code 2.10.58) ] &&
skip "need MDS version at least 2.10.58"
+ stack_trap "restore_opencache" EXIT
+ disable_opencache
+
mkdir -p $DIR/$tdir
local f=$DIR/$tdir/$tfile
local llog_reader=$(do_facet mgs "which llog_reader 2> /dev/null")
llog_reader=${llog_reader:-$LUSTRE/utils/llog_reader}
[ -z $(do_facet mgs ls -d $llog_reader 2> /dev/null) ] &&
- skip_env "missing llog_reader" && return
- local fstype=$(facet_fstype mds1)
+ skip_env "missing llog_reader"
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
local f=$DIR/$tdir/$tfile
local entry
#remount mds1 as ldiskfs or zfs type
- stack_trap "stop mds1; start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS" EXIT
stop mds1 || error "stop mds1 failed"
+ stack_trap "unmount_fstype mds1; start mds1 $(mdsdevname 1)\
+ $MDS_MOUNT_OPTS" EXIT
mount_fstype mds1 || error "remount mds1 failed"
for ((i = 0; i < 1; i++)); do