Whamcloud - gitweb
LU-14204 tests: make sure we have a single import
authorSebastien Buisson <sbuisson@ddn.com>
Wed, 9 Dec 2020 17:53:12 +0000 (18:53 +0100)
committerAndreas Dilger <adilger@whamcloud.com>
Thu, 15 Jul 2021 02:56:56 +0000 (02:56 +0000)
In sanity, retrieve the exact name of the import being used on the
client, in order to properly get information such as lock_count
or lru_size.

Lustre-change: https://review.whamcloud.com/41758
Lustre-commit: 9bbc45d3f48acf79a1ad0a1161af832e040ee52f

Lustre-change: https://review.whamcloud.com/42019
Lustre-commit: 4541d5424ebcac028864f454af0e650f8ee9468b

Change-Id: I065b7da7990c7171d5baa24f3400c5f8ffc12fc9
Test-Parameters: trivial
Test-Parameters: env=SHARED_KEY=true testlist=sanity
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/41855
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/tests/sanity.sh
lustre/tests/test-framework.sh

index c0ff280..8d8206e 100755 (executable)
@@ -19989,6 +19989,9 @@ test_255c() {
        [ $OST1_VERSION -lt $(version_code 2.10.50) ] &&
                skip "lustre < 2.10.50 does not support lockahead"
 
+       local ost1_imp=$(get_osc_import_name client ost1)
+       local imp_name=$($LCTL list_param osc.$ost1_imp | head -n1 |
+                        cut -d'.' -f2)
        local count
        local new_count
        local difference
@@ -20036,7 +20039,7 @@ test_255c() {
                cancel_lru_locks osc
 
                count=$($LCTL get_param -n \
-                      ldlm.namespaces.$FSNAME-OST0000*osc-[-0-9a-f]*.lock_unused_count)
+                      ldlm.namespaces.$imp_name.lock_unused_count)
 
                lockahead_test -d $DIR/$tdir -t $i -f $tfile
                rc=$?
@@ -20045,7 +20048,7 @@ test_255c() {
                fi
 
                new_count=$($LCTL get_param -n \
-                      ldlm.namespaces.$FSNAME-OST0000*osc-[-0-9a-f]*.lock_unused_count)
+                      ldlm.namespaces.$imp_name.lock_unused_count)
                difference="$((new_count - count))"
 
                # Test 15 output is divided by 100 to map down to valid return
@@ -21238,6 +21241,9 @@ test_280() {
        stop mgs || error "stop mgs failed"
        #for a race mgs would crash
        start mgs $(mgsdevname) $MGS_MOUNT_OPTS || error "start mgs failed"
+       # make sure we unmount client before remounting
+       wait
+       umount_client $MOUNT
        mount_client $MOUNT || error "mount client failed"
 }
 run_test 280 "Race between MGS umount and client llog processing"
@@ -22106,7 +22112,7 @@ test_311() {
                skip "lustre < 2.8.54 does not contain LU-4825 fix"
        remote_mds_nodsh && skip "remote MDS with nodsh"
 
-       local old_iused=$($LFS df -i | grep OST0000 | awk '{ print $3 }')
+       local old_iused=$($LFS df -i | awk '/OST0000/ { print $3; exit; }')
        local mdts=$(comma_list $(mdts_nodes))
 
        mkdir -p $DIR/$tdir
@@ -22138,7 +22144,7 @@ test_311() {
 
        local new_iused
        for i in $(seq 120); do
-               new_iused=$($LFS df -i | grep OST0000 | awk '{ print $3 }')
+               new_iused=$($LFS df -i | awk '/OST0000/ { print $3; exit; }')
                # system may be too busy to destroy all objs in time, use
                # a somewhat small value to not fail autotest
                [ $((old_iused - new_iused)) -gt 400 ] && break
@@ -22384,12 +22390,15 @@ test_317() {
 run_test 317 "Verify blocks get correctly update after truncate"
 
 test_318() {
+       local llite_name="llite.$($LFS getname $MOUNT | awk '{print $1}')"
        local old_max_active=$($LCTL get_param -n \
-                           llite.*.max_read_ahead_async_active 2>/dev/null)
+                           ${llite_name}.max_read_ahead_async_active \
+                           2>/dev/null)
 
        $LCTL set_param llite.*.max_read_ahead_async_active=256
        local max_active=$($LCTL get_param -n \
-                          llite.*.max_read_ahead_async_active 2>/dev/null)
+                          ${llite_name}.max_read_ahead_async_active \
+                          2>/dev/null)
        [ $max_active -ne 256 ] && error "expected 256 but got $max_active"
 
        $LCTL set_param llite.*.max_read_ahead_async_active=0 ||
@@ -22397,7 +22406,7 @@ test_318() {
 
        $LCTL set_param llite.*.max_read_ahead_async_active=512
        max_active=$($LCTL get_param -n \
-                    llite.*.max_read_ahead_async_active 2>/dev/null)
+                    ${llite_name}.max_read_ahead_async_active 2>/dev/null)
        [ $max_active -eq 512 ] || error "expected 512 but got $max_active"
 
        # restore @max_active
@@ -22405,9 +22414,9 @@ test_318() {
                llite.*.max_read_ahead_async_active=$old_max_active
 
        local old_threshold=$($LCTL get_param -n \
-               llite.*.read_ahead_async_file_threshold_mb 2>/dev/null)
+               ${llite_name}.read_ahead_async_file_threshold_mb 2>/dev/null)
        local max_per_file_mb=$($LCTL get_param -n \
-               llite.*.max_read_ahead_per_file_mb 2>/dev/null)
+               ${llite_name}.max_read_ahead_per_file_mb 2>/dev/null)
 
        local invalid=$(($max_per_file_mb + 1))
        $LCTL set_param \
@@ -22419,7 +22428,7 @@ test_318() {
                llite.*.read_ahead_async_file_threshold_mb=$valid ||
                        error "set $valid should succeed"
        local threshold=$($LCTL get_param -n \
-               llite.*.read_ahead_async_file_threshold_mb 2>/dev/null)
+               ${llite_name}.read_ahead_async_file_threshold_mb 2>/dev/null)
        [ $threshold -eq $valid ] || error \
                "expect threshold $valid got $threshold"
        $LCTL set_param \
@@ -22453,6 +22462,10 @@ test_319() {
 run_test 319 "lost lease lock on migrate error"
 
 test_398a() { # LU-4198
+       local ost1_imp=$(get_osc_import_name client ost1)
+       local imp_name=$($LCTL list_param osc.$ost1_imp | head -n1 |
+                        cut -d'.' -f2)
+
        $LFS setstripe -c 1 -i 0 $DIR/$tfile
        $LCTL set_param ldlm.namespaces.*.lru_size=clear
 
@@ -22461,7 +22474,7 @@ test_398a() { # LU-4198
 
        dd if=/dev/zero of=$DIR/$tfile bs=1M count=1 oflag=direct conv=notrunc
        local lock_count=$($LCTL get_param -n \
-                          ldlm.namespaces.*-OST0000-osc-ffff*.lru_size)
+                          ldlm.namespaces.$imp_name.lru_size)
        [[ $lock_count -eq 0 ]] || error "lock should be cancelled by direct IO"
 
        $LCTL set_param ldlm.namespaces.*-OST0000-osc-ffff*.lru_size=clear
@@ -22469,7 +22482,7 @@ test_398a() { # LU-4198
        # no lock cached, should use lockless IO and not enqueue new lock
        dd if=/dev/zero of=$DIR/$tfile bs=1M count=1 oflag=direct conv=notrunc
        lock_count=$($LCTL get_param -n \
-                    ldlm.namespaces.*-OST0000-osc-ffff*.lru_size)
+                    ldlm.namespaces.$imp_name.lru_size)
        [[ $lock_count -eq 0 ]] || error "no lock should be held by direct IO"
 }
 run_test 398a "direct IO should cancel lock otherwise lockless"
@@ -22501,6 +22514,10 @@ test_398b() { # LU-4198
 run_test 398b "DIO and buffer IO race"
 
 test_398c() { # LU-4198
+       local ost1_imp=$(get_osc_import_name client ost1)
+       local imp_name=$($LCTL list_param osc.$ost1_imp | head -n1 |
+                        cut -d'.' -f2)
+
        which fio || skip_env "no fio installed"
 
        saved_debug=$($LCTL get_param -n debug)
@@ -22529,12 +22546,11 @@ test_398c() { # LU-4198
                --filename=$DIR/$tfile
        [ $? -eq 0 ] || error "fio write error"
 
-       [ $($LCTL get_param -n \
-        ldlm.namespaces.${FSNAME}-OST0000-osc-ffff*.lock_count) -eq 0 ] ||
+       [ $($LCTL get_param -n ldlm.namespaces.$imp_name.lock_count) -eq 0 ] ||
                error "Locks were requested while doing AIO"
 
        # get the percentage of 1-page I/O
-       pct=$($LCTL get_param osc.${FSNAME}-OST0000-osc-ffff*.rpc_stats |
+       pct=$($LCTL get_param osc.${imp_name}.rpc_stats |
                grep -A 1 'pages per rpc' | grep -v 'pages per rpc' |
                awk '{print $7}')
        [ $pct -le 50 ] || error "$pct% of I/O are 1-page"
@@ -22601,7 +22617,7 @@ test_fake_rw() {
        $LFS setstripe -c 1 -i 0 $DIR/$tfile
 
        # get ost1 size - $FSNAME-OST0000
-       local ost1_avail_size=$($LFS df | awk /${ost1_svc}/'{ print $4 }')
+       local ost1_avail_size=$($LFS df $DIR | awk /${ost1_svc}/'{ print $4 }')
        local blocks=$((ost1_avail_size/2/1024)) # half avail space by megabytes
        [ $blocks -gt 1000 ] && blocks=1000 # 1G in maximum
 
@@ -23849,26 +23865,24 @@ test_421f() {
        cnt=$(ls -1 $DIR/$tdir | wc -l)
        [ $cnt == 1 ] || error "unexpected #files after (5): $cnt"
 
-       umount_client $MOUNT || error "failed to umount client"
-       mount_client $MOUNT "$MOUNT_OPTS,user_fid2path" ||
+       tmpdir=$(mktemp -d /tmp/lustre-XXXXXX)
+       stack_trap "rmdir $tmpdir"
+       mount_client $tmpdir "$MOUNT_OPTS,user_fid2path" ||
                error "failed to mount client'"
+       stack_trap "umount_client $tmpdir"
 
-       $RUNAS $LFS rmfid $DIR $FID || error "rmfid failed"
+       $RUNAS $LFS rmfid $tmpdir $FID || error "rmfid failed"
        # rmfid should succeed
-       cnt=$(ls -1 $DIR/$tdir | wc -l)
+       cnt=$(ls -1 $tmpdir/$tdir | wc -l)
        [ $cnt == 0 ] || error "unexpected #files after (6): $cnt"
 
        # rmfid shouldn't allow to remove files due to dir's permission
-       chmod a+rwx $DIR/$tdir
-       touch $DIR/$tdir/f
-       ls -la $DIR/$tdir
-       FID=$(lfs path2fid $DIR/$tdir/f)
-       $RUNAS $LFS rmfid $DIR $FID && error "rmfid didn't fail"
-
-       umount_client $MOUNT || error "failed to umount client"
-       mount_client $MOUNT "$MOUNT_OPTS" ||
-               error "failed to mount client'"
-
+       chmod a+rwx $tmpdir/$tdir
+       touch $tmpdir/$tdir/f
+       ls -la $tmpdir/$tdir
+       FID=$(lfs path2fid $tmpdir/$tdir/f)
+       $RUNAS $LFS rmfid $tmpdir $FID && error "rmfid didn't fail"
+       return 0
 }
 run_test 421f "rmfid checks permissions"
 
@@ -25404,6 +25418,10 @@ test_815()
 run_test 815 "zero byte tiny write doesn't hang (LU-12382)"
 
 test_816() {
+       local ost1_imp=$(get_osc_import_name client ost1)
+       local imp_name=$($LCTL list_param osc.$ost1_imp | head -n1 |
+                        cut -d'.' -f2)
+
        $LFS setstripe -c 1 -i 0 $DIR/$tfile
        # ensure ost1 is connected
        stat $DIR/$tfile >/dev/null || error "can't stat"
@@ -25414,12 +25432,12 @@ test_816() {
        local before
        local now
        before=$($LCTL get_param -n \
-                ldlm.namespaces.$FSNAME-OST0000-osc-[^M]*.lru_size)
+                ldlm.namespaces.$imp_name.lru_size)
 
        wait_osc_import_state client ost1 IDLE
        dd if=/dev/null of=$DIR/$tfile bs=1k count=1 conv=sync
        now=$($LCTL get_param -n \
-             ldlm.namespaces.$FSNAME-OST0000-osc-[^M]*.lru_size)
+             ldlm.namespaces.$imp_name.lru_size)
        [ $before == $now ] || error "lru_size changed $before != $now"
 }
 run_test 816 "do not reset lru_resize on idle reconnect"
index 88b7afb..a27ceb0 100755 (executable)
@@ -7584,8 +7584,9 @@ _wait_osc_import_state() {
 
        params=$(tr '\n' ' ' <<< $params)
 
+       local plist=$(comma_list $params)
        if ! do_rpc_nodes "$(facet_active_host $facet)" \
-                       wait_import_state $expected "$params" $maxtime; then
+                       wait_import_state $expected $plist $maxtime; then
                error "$facet: import is not in $expected state after $maxtime"
                return 1
        fi
@@ -7640,8 +7641,9 @@ _wait_mgc_import_state() {
                        params=$($LCTL list_param $param 2>/dev/null || true)
                done
        fi
+       local plist=$(comma_list $params)
        if ! do_rpc_nodes "$(facet_active_host $facet)" \
-                       wait_import_state $expected "$params" $maxtime \
+                       wait_import_state $expected $plist $maxtime \
                                          $error_on_failure; then
                if [ $error_on_failure -ne 0 ]; then
                    error "import is not in ${expected} state"