From fabec6f2cb39950a2f208567dac716e21880fa9f Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Fri, 24 Mar 2023 17:09:44 -0600 Subject: [PATCH] LU-15740 tests: scale fs_log_size by OSTCOUNT The fs_log_size "free space skew" was being scaled by MDSCOUNT, but in fact this parameter is only ever used to compare the OST free space usage, so the OSTCOUNT should be used when scaling it. It is likely that the skew is actually caused by blocks allocated by OST object directories and not llogs (no llogs used on OSTs for many years), but it isn't worthwhile to rename the function. Test-Parameters: trivial testlist=replay-single env=ONLY="20b 89" Test-Parameters: testlist=runtests clientdistro=ubuntu2204 Test-Parameters: testlist=replay-ost-single env=ONLY="6 7" Test-Parameters: testlist=sanity-sec env=ONLY="16-22 Signed-off-by: Andreas Dilger Change-Id: I97f05b10fa7ec367534b5bdce09feae5e93ebbe5 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/50419 Reviewed-by: Oleg Drokin Reviewed-by: Arshad Hussain Reviewed-by: Alex Deiter Tested-by: jenkins Tested-by: Maloo --- lustre/tests/replay-ost-single.sh | 20 ++++++++------------ lustre/tests/replay-single.sh | 17 ++++++----------- lustre/tests/test-framework.sh | 8 +++++--- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/lustre/tests/replay-ost-single.sh b/lustre/tests/replay-ost-single.sh index 5cb0369..f0b33b9 100755 --- a/lustre/tests/replay-ost-single.sh +++ b/lustre/tests/replay-ost-single.sh @@ -169,10 +169,6 @@ test_5() { } run_test 5 "Fail OST during iozone" -kbytesfree() { - calc_osc_kbytes kbytesfree -} - test_6() { remote_mds_nodsh && skip "remote MDS with nodsh" && return 0 @@ -185,7 +181,7 @@ test_6() { wait_destroy_complete || error "first wait_destroy_complete failed" sync_all_data - local before=$(kbytesfree) + local before=$(calc_osc_kbytes kbytesfree) dd if=/dev/urandom bs=4096 count=1280 of=$f || error "dd failed" $LFS getstripe $f || error "$LFS getstripe $f failed" local stripe_index=$(lfs getstripe -i $f) @@ -200,13 +196,13 @@ test_6() { wait_mds_ost_sync || error "second wait_mds_ost_sync failed" # retry till statfs returns useful results - local after_dd=$(kbytesfree) + local after_dd=$(calc_osc_kbytes kbytesfree) local i=0 while (( $before <= $after_dd && $i < 20 )); do sync sleep 1 let ++i - after_dd=$(kbytesfree) + after_dd=$(calc_osc_kbytes kbytesfree) done log "before_free: $before after_dd_free: $after_dd took $i seconds" @@ -222,7 +218,7 @@ test_6() { # let the delete happen wait_mds_ost_sync || error "third wait_mds_ost_sync failed" wait_delete_completed || error "second wait_delete_completed failed" - local after=$(kbytesfree) + local after=$(calc_osc_kbytes kbytesfree) log "free_before: $before free_after: $after" (( $before <= $after + $(fs_log_size) )) || error "$before > $after + logsize $(fs_log_size)" @@ -238,18 +234,18 @@ test_7() { wait_mds_ost_sync || error "wait_mds_ost_sync failed" wait_destroy_complete || error "wait_destroy_complete failed" - local before=$(kbytesfree) + local before=$(calc_osc_kbytes kbytesfree) dd if=/dev/urandom bs=4096 count=1280 of=$f || error "dd to file failed: $?" sync - local after_dd=$(kbytesfree) + local after_dd=$(calc_osc_kbytes kbytesfree) local i=0 while (( $before <= $after_dd && $i < 10 )); do sync sleep 1 let ++i - after_dd=$(kbytesfree) + after_dd=$(calc_osc_kbytes kbytesfree) done log "before: $before after_dd: $after_dd took $i seconds" @@ -264,7 +260,7 @@ test_7() { # let the delete happen wait_mds_ost_sync || error "wait_mds_ost_sync failed" wait_delete_completed || error "wait_delete_completed failed" - local after=$(kbytesfree) + local after=$(calc_osc_kbytes kbytesfree) log "before: $before after: $after" (( $before <= $after + $(fs_log_size) )) || error "$before > $after + logsize $(fs_log_size)" diff --git a/lustre/tests/replay-single.sh b/lustre/tests/replay-single.sh index 63013bc..15abd0f 100755 --- a/lustre/tests/replay-single.sh +++ b/lustre/tests/replay-single.sh @@ -3253,23 +3253,17 @@ test_88() { #bug 17485 } run_test 88 "MDS should not assign same objid to different files " -function calc_osc_kbytes_used() { - local kbtotal=$(calc_osc_kbytes kbytestotal) - local kbfree=$(calc_osc_kbytes kbytesfree) - echo $((kbtotal-kbfree)) -} - test_89() { cancel_lru_locks osc mkdir_on_mdt0 $DIR/$tdir || error "mkdir $DIR/$tdir failed" rm -f $DIR/$tdir/$tfile wait_mds_ost_sync || error "initial MDS-OST sync timed out" wait_delete_completed || error "initial wait delete timed out" - local blocks1=$(calc_osc_kbytes_used) + local before=$(calc_osc_kbytes kbytesfree) local write_size=$(fs_log_size) $LFS setstripe -i 0 -c 1 $DIR/$tdir/$tfile - [ $write_size -lt 1024 ] && write_size=1024 + (( $write_size >= 1024 )) || write_size=1024 dd if=/dev/zero bs=${write_size}k count=10 of=$DIR/$tdir/$tfile sync stop ost1 @@ -3287,10 +3281,11 @@ test_89() { wait_mds_ost_sync || error "MDS-OST sync timed out" wait_delete_completed || error "wait delete timed out" - local blocks2=$(calc_osc_kbytes_used) + local after=$(calc_osc_kbytes kbytesfree) - [ $((blocks2 - blocks1)) -le $(fs_log_size) ] || - error $((blocks2 - blocks1)) blocks leaked + log "free_before: $before free_after: $after" + (( $before <= $after + $(fs_log_size) )) || + error "kbytesfree $before > $after + margin $(fs_log_size)" } run_test 89 "no disk space leak on late ost connection" diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 89a440d..478d9e5 100755 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -934,18 +934,20 @@ unload_modules() { } fs_log_size() { - local facet=${1:-$SINGLEMDS} + local facet=${1:-ost1} local size=0 + local mult=$OSTCOUNT case $(facet_fstype $facet) in - ldiskfs) size=72;; # largest seen is 64, leave some headroom + ldiskfs) size=32;; # largest seen is 64 with multiple OSTs # grant_block_size is in bytes, allow at least 2x max blocksize zfs) size=$(lctl get_param osc.$FSNAME*.import | awk '/grant_block_size:/ {print $2/512; exit;}') ;; esac - echo -n $((size * MDSCOUNT)) + [[ $facet =~ mds ]] && mult=$MDTCOUNT + echo -n $((size * mult)) } fs_inode_ksize() { -- 1.8.3.1