Whamcloud - gitweb
LU-15740 tests: scale fs_log_size by OSTCOUNT 19/50419/8
authorAndreas Dilger <adilger@whamcloud.com>
Fri, 24 Mar 2023 23:09:44 +0000 (17:09 -0600)
committerOleg Drokin <green@whamcloud.com>
Tue, 4 Apr 2023 14:38:19 +0000 (14:38 +0000)
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 <adilger@whamcloud.com>
Change-Id: I97f05b10fa7ec367534b5bdce09feae5e93ebbe5
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/50419
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Reviewed-by: Alex Deiter <alex.deiter@gmail.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/tests/replay-ost-single.sh
lustre/tests/replay-single.sh
lustre/tests/test-framework.sh

index 5cb0369..f0b33b9 100755 (executable)
@@ -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)"
index 63013bc..15abd0f 100755 (executable)
@@ -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"
 
index 89a440d..478d9e5 100755 (executable)
@@ -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() {